![subgraphs 21](../figures/subgraphs_21.png)
45. Design Patterns
Readers
Subgraphs with no edge connected to the SubgraphInput component do not declare any input ports, therefore cannot receive input data so will likely be used as Readers.
![subgraphs 21](../figures/subgraphs_21.png)
Figure 311. Subgraph - Reader
Writers
Subgraphs with no edge connected to the SubgraphOutput component provide no output ports, therefore cannot produce any data so will likely be used as Writers.
![subgraphs 22](../figures/subgraphs_22.png)
Figure 312. Subgraph - Writer
Transformers
Subgraph having connected both components (SubgraphInput and SubgraphOutput) is essentially a Transformer.
![subgraphs 23](../figures/subgraphs_23.png)
Figure 313. Subgraph - Transformer
Executors
Subgraphs with no edge connected to the SubgraphInput or SubgraphOutput components can be used as utility Executors. As they cannot be connected to other components in a parent graph, the execution of subgraphs without ports is controlled via Phases.
![subgraphs 24](../figures/subgraphs_24.png)
Figure 314. Subgraph - Executor