레두진도 아코플라멘토

4952 단어 javaarchitecture
Tempos vários princípios que ajudam na implementação de códigos mais desacoplados e tudo mais, aqui a ideia e exemplificar como podemos fazer isso.

예시



상상해보십시오 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

좋은 웹페이지 즐겨찾기