Os padrões de criação GoF (Gang of Four) abstraem o processo de instanciação. Estes padrões ajudam um sistema a tornar-se independente dos objetos que cria. Há dois tipos de padrões de criação: padrões de criação de classe e padrões de criação de objeto. Os padrões de criação de classe usam a herança para variar a classe instanciada. Os padrões de criação de objeto delegam a instanciação.
A tabela abaixo descreve cada um dos padrões de criação GoF:
| Nome do padrão | Problema de design tratado | Função | Descrição |
|---|---|---|---|
| Fábrica abstrata | Define uma interface usada para criar objetos de forma genérica, sem ter que especificar as classes concretas. | FábricaAbstrata | Define uma interface pública usada para criar objetos ProdutoAbstrato. |
| FábricaConcreta | Define as operações para criar objetos ProdutoConcretos. | ||
| ProdutoAbstrato | Define uma interface pública de um tipo de produto. | ||
| ProdutoConcreto | Declara um objeto de produto que será instanciado pela fábrica concreta relacionada a ele. Define a interface de ProdutoAbstrato. | ||
| Cliente | Manipula os objetos FábricaAbstrata e ProdutoAbstrato. | ||
| Construtor | A construção de um objeto complexo está separada da sua representação para que o mesmo processo de construção possa criar representações diferentes. | Construtor | Define as operações solicitadas para a criação de várias partes de um objeto Produto. |
| ConstrutorConcreto | Implementa as operações declaradas na interface do construtor. | ||
| Diretor | Constrói um produto específico através da interface exposta pelo objeto Construtor. | ||
| Produto | O tipo concreto criado pelo objeto Construtor. | ||
| Método da fábrica | Fornece uma interface para a criação de um objeto. As subclasses que implementam a interface base da fábrica podem decidir que objeto concreto criar em tempo de execução. | Produto | Define a interface pública que permite que os clientes criem objetos. |
| ProdutoConcreto | Implementa as operações declaradas na interface do produto. | ||
| Criador | Define as operações usadas para criar objetos que implementam a interface do produto. | ||
| CriadorConcreto | Implementa as operações declaradas na interface do criador. | ||
| Protótipo | Fornece uma interface a partir da qual um cliente pode mandar um determinado objeto manipular os detalhes específicos de clonagem deste mesmo objeto, resultando em uma cópia exata. | Protótipo | Fornece um método consistente que pode ser usado para clonar o objeto atual. |
| ProtótipoConcreto | Implementa as operações declaradas na interface do protótipo. | ||
| Cliente | Manipula os objetos Protótipo. | ||
| Singleton | Garante que um determinado tipo de classe tenha somente uma instância, proporcionando, ao mesmo tempo, acesso global para todos os clientes interessados em tal instância. | Singleton | Define um conjunto de operações que permite que os clientes acessem uma única instância deste tipo. |