Propõe padrões de design aplicáveis à base de código e avalia a conformidade com os princípios SOLID.
Analyzes codebase for design patterns, SOLID principles compliance, and suggests refactoring improvements.
/plugin marketplace add wasabeef/claude-code-cookbook/plugin install cook-pt@claude-code-cookbookPropõe padrões de design aplicáveis à base de código e avalia a conformidade com os princípios SOLID.
/design-patterns [alvo-de-análise] [opções]
--suggest : Propor padrões aplicáveis (padrão)--analyze : Analisar uso de padrões existentes--refactor : Gerar propostas de refatoração--solid : Verificar conformidade com princípios SOLID--anti-patterns : Detectar antipadrões# Análise de padrões de todo o projeto
/design-patterns
# Proposta de padrões para arquivo específico
/design-patterns src/services/user.js --suggest
# Verificação de princípios SOLID
/design-patterns --solid
# Detecção de antipadrões
/design-patterns --anti-patterns
S - Single Responsibility Principle (Princípio da Responsabilidade Única)
O - Open/Closed Principle (Princípio Aberto/Fechado)
L - Liskov Substitution Principle (Princípio da Substituição de Liskov)
I - Interface Segregation Principle (Princípio da Segregação de Interface)
D - Dependency Inversion Principle (Princípio da Inversão de Dependência)
Relatório de Análise de Design Patterns
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Padrões Atualmente em Uso
├─ Observer Pattern: EventEmitter (12 locais)
├─ Factory Pattern: UserFactory (3 locais)
├─ Singleton Pattern: DatabaseConnection (1 local)
└─ Strategy Pattern: PaymentProcessor (5 locais)
Padrões Recomendados
├─ [HIGH] Repository Pattern
│ └─ Alvo: src/models/*.js
│ └─ Motivo: Separação da lógica de acesso a dados
│ └─ Exemplo:
│ class UserRepository {
│ async findById(id) { ... }
│ async save(user) { ... }
│ }
│
├─ [MED] Command Pattern
│ └─ Alvo: src/api/handlers/*.js
│ └─ Motivo: Unificação do processamento de requisições
│
└─ [LOW] Decorator Pattern
└─ Alvo: src/middleware/*.js
└─ Motivo: Melhoria da combinação de funcionalidades
Violações dos Princípios SOLID
├─ [S] UserService: responsável tanto por autenticação quanto gerenciamento de permissões
├─ [O] PaymentGateway: necessária modificação ao adicionar novos métodos de pagamento
├─ [D] EmailService: depende diretamente de classes concretas
└─ [I] IDataStore: contém métodos não utilizados
Propostas de Refatoração
1. Dividir UserService em autenticação e gerenciamento de permissões
2. Introduzir interface PaymentStrategy
3. Definir interface EmailService
4. Separar IDataStore por uso
# Análise de impacto da aplicação de padrões
/design-patterns --impact-analysis Repository
# Geração de exemplo de implementação de padrão específico
/design-patterns --generate Factory --for src/models/Product.js
# Proposta de combinação de padrões
/design-patterns --combine --context "API with caching"
# Avaliação de padrões arquiteturais
/design-patterns --architecture MVC
class OrderService {
processOrder(order, paymentType) {
if (paymentType === "credit") {
// Processamento de cartão de crédito
} else if (paymentType === "paypal") {
// Processamento PayPal
}
// Outros métodos de pagamento...
}
}
// Interface de estratégia
class PaymentStrategy {
process(amount) {
throw new Error("Must implement process method");
}
}
// Estratégia concreta
class CreditCardPayment extends PaymentStrategy {
process(amount) {
/* implementação */
}
}
// Contexto
class OrderService {
constructor(paymentStrategy) {
this.paymentStrategy = paymentStrategy;
}
processOrder(order) {
this.paymentStrategy.process(order.total);
}
}