Solid RELAÇÃO COM GOF

O objetivo desse documento é mostrar que o design SOLID possui 5 princípios relacionados com os criacionais do GOF(GANG OF FOUR).
Assim que um princípio mostra e faz, o GOF é a implementação desse design.

[ Hits: 593 ]

Por: trogmaiu em 14/04/2026


RELAÇÃO DO SOLID COM GOF (CRIACIONAIS)



Factory Method

Relaciona com:
DIP (depende de interface).
OCP (extensível).

Factory Method - DIP + OCP

Sem Factory (acoplado):
class Servico {
    Email email = new Email();
}

Com Factory + abstração:
interface Notificacao {
    void enviar(String msg);
}
class Email implements Notificacao {
    public void enviar(String msg) {}
}
class SMS implements Notificacao {
    public void enviar(String msg) {}
}
class FabricaNotificacao {
    public static Notificacao criar(String tipo) {
        if (tipo.equals("email")) return new Email();
            return new SMS();
    }
}
class Servico {
    private Notificacao notificacao;
    public Servico(Notificacao notificacao) {
        this.notificacao = notificacao;
    }
}

DIP: depende da interface.
OCP: adiciona novos tipos sem alterar o Servico.

Abstract Factory

Relaciona com:
DIP
OCP
ISP
interface Botao {
    void render();
}
interface Checkbox {
    void marcar();
}
class BotaoWindows implements Botao {
    public void render() {}
}
class CheckboxWindows implements Checkbox {
    public void marcar() {}
}
interface FabricaGUI {
    Botao criarBotao();
    Checkbox criarCheckbox();
}
class FabricaWindows implements FabricaGUI {
    public Botao criarBotao() { return new BotaoWindows(); }
    public Checkbox criarCheckbox() { return new CheckboxWindows(); }
}

DIP: tudo baseado em interface.
OCP: nova fábrica sem alterar código existente.
ISP: interfaces pequenas (Botao, Checkbox).

Builder

Relaciona com:
SRP (separa construção do objeto).
Sem Builder (classe inchada):
class Usuario {
    String nome;
    String email;
    String senha;
    public Usuario(String nome, String email, String senha) {
        this.nome = nome;
        this.email = email;
        this.senha = senha;
    }
}

Com Builder:
class Usuario {
    String nome;
    String email;
    String senha;
}
class UsuarioBuilder {
    private Usuario u = new Usuario();
    public UsuarioBuilder nome(String nome) {
        u.nome = nome;
        return this;
    }
    public UsuarioBuilder email(String email) {
        u.email = email;
        return this;
    }
    public Usuario build() {
        return u;
    }
}

SRP: separa construção da estrutura do objeto.

Resumo Visual

SOLID - princípios (como pensar).
GoF - padrões (como implementar).

Factory - cria objetos.
Abstract Factory - cria famílias.
Builder - constrói objetos complexos.

CONCLUSÃO

SOLID guia o design.
GoF aplica soluções práticas.

Eles não são a mesma coisa, mas trabalham juntos.

Use SOLID para decidir COMO estruturar.
Use GoF para decidir COMO implementar.
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
RELACAO DO SOLID COM GOF (CRIACIONAIS)
Página anterior    

Páginas do artigo
   1. Solid RELAÇÃO COM GOF (Explicação)
   2. SOLID (EXPLICAÇÂO)
   3. GOF CRIACIONAIS (EXPLICAÇÃO)
   4. RELAÇÃO DO SOLID COM GOF (CRIACIONAIS)
Outros artigos deste autor

Boas Práticas e Padrões Idiomáticos em Go e C

Leitura recomendada

Criando gráficos com a classe JPGraph (parte 2)

Utilizando PHP para validar dados passados pelo usuário

Utilizando o Smarty template no PHP

Guia completo do Ocomon no Linux - Módulo cliente, abertura de ocorrência (exclusivo VOL)

Criando um sistema de banners rotativos em PHP

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts