Especialista em Padrões de Projeto Criacionais (GoF Creational Patterns) baseado em Design Patterns (Gang of Four) e Refactoring to Patterns. Cobre Factory Method, Abstract Factory, Builder, Prototype e Singleton, abstraindo o processo de instanciação de objetos, desacoplando clientes de classes concretas e promovendo flexibilidade e reutilização.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add dandgabr/skills --skill dp-creational-patterns --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Dp Creational Patterns?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/dandgabr-dp-creational-patterns)More formats (shields.io, HTML) on the badges page.
---
name: dp-creational-patterns
description: "Especialista em Padrões de Projeto Criacionais (GoF Creational Patterns) baseado em Design Patterns (Gang of Four) e Refactoring to Patterns. Cobre Factory Method, Abstract Factory, Builder, Prototype e Singleton, abstraindo o processo de instanciação de objetos, desacoplando clientes de classes concretas e promovendo flexibilidade e reutilização."
---
# Padrões de Projeto Criacionais (GoF Creational Patterns)
Os padrões criacionais abstraem o processo de instanciação, tornando o sistema independente de como seus objetos são criados, compostos e representados. Eles encapsulam o conhecimento sobre quais classes concretas são utilizadas e ocultam como as instâncias são criadas e combinadas.
---
## 🏭 1. Factory Method
### 1.1 Intenção e Motivação
Define uma interface para criar um objeto, mas permite que as subclasses decidam qual classe instanciar. O Factory Method permite adiar a instanciação para subclasses.
```mermaid
classDiagram
class Creator {
+someOperation()
+createProduct()* Product
}
class ConcreteCreatorA {
+createProduct() Product
}
class ConcreteCreatorB {
+createProduct() Product
}
class Product {
<<interface>>
+doStuff()*
}
class ConcreteProductA {
+doStuff()
}
class ConcreteProductB {
+doStuff()
}
Creator <|-- ConcreteCreatorA
Creator <|-- ConcreteCreatorB
Product <|.. ConcreteProductA
Product <|.. ConcreteProductB
ConcreteCreatorA ..> ConcreteProductA : cria
ConcreteCreatorB ..> ConcreteProductB : cria
```
### 1.2 Aplicabilidade
- Quando uma classe não pode antecipar a classe dos objetos que deve criar.
- Quando uma classe quer que suas subclasses especifiquem os objetos que criam.
- Quando classes delegam responsabilidade para uma de várias subclasses auxiliares.
---
## 🏢 2. Abstract Factory
### 2.1 Intenção e Motivação
Fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas (ex: temas de UI para Mac, Windows e Linux).
```mermaid
classDiagram
class GUIFactory {
<<interface>>
+createButton() Button
+createCheckbox() Checkbox
}
class WinFactory {
+createButton() Button
+createCheckbox() Checkbox
}
class MacFactory {
+createButton() Button
+createCheckbox() Checkbox
}
class Button {
<<interface>>
+render()
}
class Checkbox {
<<interface>>
+render()
}
GUIFactory <|.. WinFactory
GUIFactory <|.. MacFactory
WinFactory ..> Button
WinFactory ..> Checkbox
MacFactory ..> Button
MacFactory ..> Checkbox
```
### 2.2 Aplicabilidade
- Um sistema deve ser independente de como seus produtos são criados, compostos e representados.
- Um sistema deve ser configurado com uma de múltiplas famílias de produtos.
- Uma família de objetos relacionados foi projetada para ser usada em conjunto e você precisa garantir essa restrição.
---
## 🔨 3. Builder
### 3.1 Intenção e Motivação
Separa a construção de um objeto complexo da sua representação, de modo que o mesmo processo de construção possa criar diferentes representações passo a passo.
```mermaid
classDiagram
class Director {
-builder: Builder
+construct(type)
}
class Builder {
<<interface>>
+reset()
+buildStepA()
+buildStepB()
+getResult() Product
}
class ConcreteBuilder {
-product: Product
+reset()
+buildStepA()
+buildStepB()
+getResult() Product
}
class Product {
+parts
}
Director o-- Builder
Builder <|.. ConcreteBuilder
ConcreteBuilder ..> Product : monta
```
### 3.2 Aplicabilidade
- Para livrar-se de um "construtor telescópico" com múltiplos parâmetros opcionais.
- Quando o algoritmo para criação de um objeto complexo deve ser independente das partes que compõem o objeto e de como elas são montadas.
---
## 🧬 4. Prototype
### 4.1 Intenção e Motivação
Permite copiar objetos existentes sem tornar seu código dependente de suas classes concretas, delegando o processo de clonagem aos próprios objetos.
```mermaid
classDiagram
class Prototype {
<<interface>>
+clone() Prototype
}
class ConcretePrototype {
-field1
-field2
+clone() Prototype
}
class SubclassPrototype {
-field3
+clone() Prototype
}
Prototype <|.. ConcretePrototype
ConcretePrototype <|-- SubclassPrototype
```
### 4.2 Aplicabilidade
- Quando as classes a instanciar são especificadas em tempo de execução.
- Para evitar a construção de uma hierarquia de fábricas paralela à hierarquia de produtos.
- Quando instâncias de uma classe podem ter apenas uma de poucas combinações diferentes de estado.
---
## 🔒 5. Singleton
### 5.1 Intenção e Motivação
Garante que uma classe tenha apenas uma única instância em todo o ciclo de vida da aplicação e fornece um ponto de acesso global para ela.
```mermaid
classDiagram
class Singleton {
-instance: Singleton$
-Singleton()
+getInstance()$ Singleton
+businessLogic()
}
```
### 5.2 Implementação Thread-Safe (Double-Checked Locking)
```python
import threading
class DatabaseConnection:
_instance = None
_lock = threading.Lock()
def __new__(cls, *args, **kwargs):
if not cls._instance:
with cls._lock:
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
```
---
## ⚖️ Matriz Comparativa dos Padrões Criacionais
| Padrão | Complexidade | Propósito Central | Quando Escolher |
| :--- | :---: | :--- | :--- |
| **Factory Method** | Baixa | Delega instanciação para subclasses | Criação polimórfica de um único produto |
| **Abstract Factory** | Média-Alta | Cria famílias completas de produtos compatíveis | Suites de UI, drivers multiplataforma |
| **Builder** | Média | Constrói objetos passo a passo | Objetos complexos com muitas etapas/configurações |
| **Prototype** | Baixa-Média | Clona objetos existentes com cópia profunda | Custo de instanciação alto ou estados dinâmicos |
| **Singleton** | Baixa | Ponto único de acesso a recurso compartilhado | Thread pools, caches, gerenciadores de conexão |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!