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.
Assim que um princípio mostra e faz, o GOF é a implementação desse design.
Parte 4: 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):
Com Factory + abstração:
DIP: depende da interface.
OCP: adiciona novos tipos sem alterar o Servico.
Abstract Factory
Relaciona com:
DIP
OCP
ISP
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):
Com Builder:
SRP: separa construção da estrutura do objeto.
Resumo Visual
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
Use
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.











