데메테르의 법칙을 위반하는 경우를 보고합니다.

데메테르의 법칙은 실제로 법칙은 아니지만, 다른 호출로부터 받은 객체에서 메서드를 호출하지 않도록 스타일 가이드라인을 지정하고 있습니다. 이 가이드라인을 따르는 코드는 유지 관리, 조정, 리팩터링이 쉬우며 메서드 간의 결합 및 중복이 적고 정보 숨기기가 간편합니다. 이 가이드라인을 준수하려면 여러 래퍼 메서드를 작성해야 합니다.

예:


  boolean pay(Customer c, Invoice invoice) {
    int dollars = c.getWallet().contents; // 위반
    if (dollars >= invoice.getAmount()) {
      Wallet w = c.getWallet();
      w.subtract(invoice.getAmount()); // 위반
      return true;
    }
    return false;
  }
위의 예는 CustomerpayInvoice(Invoice invoice) 메서드로 더 잘 구현할 수 있습니다.

라이브러리 메서드 호출 및 라이브러리 필드 액세스 무시 옵션을 사용하여, 라이브러리를 변경하지 않고는 수정할 수 없는 데메테르의 법칙 위반을 무시합니다.