레두진도 아코플라멘토
4952 단어 javaarchitecture
예시
상상해보십시오 que estamos implementando um código que vende jornal, teremos uma entidade que expressa a Banca e outra que Representativea a Carteira de um cliente.
구현하기
public void pagaJornal(BigDecimal valorJornal, Carteira carteira){
if(carteira.getSaldo().compareTo(valorJornal) > 0){
cateira.debitaSaldo(valorJornal);
}else{
// exception SaldoInsuficiente
}
}
Nessa primeira abordagem a banca pega a carteira do cliente verifica quanto tem e tira o valor do jornal de dentro da certeira do cliente, talvez isso não seja tão legal pois a Banca sabe muito sobre a carteira do cliente.
Desacoplada 구현
Agora vamos implementar uma solução de uma forma mais desacoplada.
class Carteira{
private BigDecimal saldo;
public void paga(BigDecimal valorADebitar) throws SemSaldoException {
if(this.saldo.compareTo(valorADebitar) > 0){
this.saldo = this.saldo.substract(valorADebitar);
}else{
throw new SemSaldoException();
}
}
}
class Banca{
public void pagaJornal(BigDecimal valorJornal, Carteira carteira){
try{
carteira.paga(valorJornal);
}catch(Exception e){
// exception SaldoInsuficiente
}
}
}
Nessa segunda abordagem a regra de saldo fica dentro da própria carteira, dessa forma a entidade Carteira está mais livre para cuidar da sua responsabilidade, caso seja necessário incluir essa mesma funcionalidade em outra parte do projeto agora será mais simples.
참조
프린시피오 데 데메테르
https://pt.wikipedia.org/wiki/Lei_de_Demeter
엔겐하리아 모데르나
https://www.amazon.com.br/Engenharia-Software-Moderna-Marco-Valente/dp/6500019504
Reference
이 문제에 관하여(레두진도 아코플라멘토), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/cassunde/reduzindo-acoplamento-2ofm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)