Resumo Padrões de projeto
- Acoplamento é o nível de dependência/conhecimento que pode existir entre as classes;
- Uma classe com acoplamento fraco não é dependente de muitas classes para fazer o que ele tem que fazer;
- Uma classe com acoplamento forte depende de muitas outras classes para fazer o seu serviço;
- Uma classe com acoplamento forte é mais difícil de manter, de entender e de ser reusada;
Coesão
- Coesão é o nível de integralidade interna de uma classe; (Veja o principio da responsabilidade única - SRP)
- A coesão Mede o grau que um classe ou seus métodos fazem sentido, ou seja, quão claro é o entendimento do que a classe ou método possui
- Uma classe com alta coesão possui responsabilidades bem definidas e são difíceis de serem desmembradas em outras classes;
- Uma classe com baixa coesão possui muitas responsabilidades, geralmente que pertencem a outras classes, e podem ser facilmente desmembradas em outras classes;
- Uma classe com baixa coesão é difícil de entender, manter e reusar;
INVERSÃO DE CONTROLE E INJEÇÃO DE DEPENDENCIA:
É quando delego a instanciação de um objeto a outra classe, ou seja, eu não instancio o objeto que realiza o serviço, alguém passa ele pra mim. É uma forma diferente de se manipular o controle sobre um objeto. Isso faz com que haja diminuição do acoplamento entre as classes.
public class VendaDeProduto { public void vendeProduto (Produto produto)
Log log = new Log("Arquivo.txt"); log.grava(produto);
}
}
public class VendaDeProduto { private Log log; public void VendaDeProduto (Log logVenda) { this.log = logVenda; } public void vendeProduto
(Produto produto) {
//Todo o código para a venda do produto... log.grava(produto); }
}