Skip to content
Back to skills

Dp Creational Patterns

ASecurity

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.

  • 10 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
designpythongorefactoringdatabase

Works with

  • cli

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add dandgabr/skills --skill dp-creational-patterns --agent claude-code

Installs 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 with every re-scan.

Security grade badge for Dp Creational Patterns
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dandgabr-dp-creational-patterns/badge)](https://www.skillsdirectory.com/skills/dandgabr-dp-creational-patterns)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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 |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.