자바 프로그래밍 원칙 : Demeter의 법칙

Dec 23 2022
안녕하세요, 오늘은 유명한 Java 프로그래밍 원칙을 한 번 살펴보겠습니다. 데미터의 법칙(LoD)이란 무엇인가 : LOD는 1987년 Northeastern University의 Ian Holland가 처음 설명한 소프트웨어 설계 원칙입니다.

안녕 모두,

오늘 우리는 유명한 Java 프로그래밍 원칙을 한 번 살펴볼 것입니다.

데메테르의 법칙(LoD)이란 무엇인가 : LOD는 1987년 Northeastern University의 Ian Holland가 처음 설명한 소프트웨어 설계 원칙입니다. 이 원칙은 그리스 수확의 여신 Demeter의 이름을 따서 명명되었으며 " 최소 지식의 원칙” 또는 “최소 결합의 원칙”.

데메테르의 법칙에 따르면 객체는 인접한 이웃과만 통신해야 하며 다른 객체의 내부 작동에 대한 지식은 제한적이어야 합니다. 이는 시스템의 복잡성과 종속성을 줄이는 데 도움이 되며 유지 관리 및 수정이 더 쉬워집니다. 이 원칙은 Java와 같은 객체 지향 프로그래밍 언어에 종종 적용되어 보다 모듈화되고 유지 관리 가능한 코드를 만드는 데 도움이 됩니다.

Java에서는 개체가 다른 개체에 대해 수행하는 메서드 호출 수를 제한하고 개체가 직접적으로 알고 있는 클래스의 수를 최소화하여 Demeter의 법칙을 적용할 수 있습니다. 이는 캡슐화, 종속성 주입 및 인터페이스 사용과 같은 기술을 통해 달성할 수 있습니다.

예를 들어 Demeter의 법칙을 위반하는 다음 코드를 고려하십시오.

class Customer {
  private BankAccount bankAccount;
  private Address address;

  public double getBalance() {
    return bankAccount.getBalance();
  }

  public String getAddress() {
    return address.getAddress();
  }
}

데메테르의 법칙을 따르기 위해 캡슐화를 사용하고 필요한 정보만 클라이언트에 노출하도록 Customer 클래스를 리팩터링할 수 있습니다.

class Customer {
  private BankAccount bankAccount;
  private Address address;

  public double getBalance() {
    return bankAccount.getBalance();
  }

  public String getAddress() {
    return address.getFormattedAddress();
  }
}

class Address {
  private String street;
  private String city;
  private String state;
  private String zip;

  public String getFormattedAddress() {
    return street + ", " + city + ", " + state + " " + zip;
  }
}

다음은 Java에서 Demeter의 법칙을 적용하기 위한 몇 가지 추가 고려 사항입니다.

  • 개체가 다른 개체에 대해 호출하는 메서드 수 최소화: 각 메서드 호출은 두 개체 간의 종속성을 나타내므로 호출 수를 최소화하면 시스템의 복잡성을 줄이는 데 도움이 될 수 있습니다.
  • 인터페이스를 사용하여 개체 분리: 인터페이스를 사용하면 개체가 서로의 내부 작업을 직접 알지 않고도 서로 통신할 수 있습니다. 이는 개체 간의 종속성을 줄이고 시스템을 보다 유연하게 만드는 데 도움이 될 수 있습니다.
  • 종속성 주입을 사용하여 개체 관계 관리: 종속성 주입은 개체가 내부에서 종속성을 생성하지 않고 외부에서 종속성을 받을 수 있도록 하는 기술입니다. 이는 개체를 분리하고 시스템을 모듈화하고 테스트할 수 있도록 만드는 데 도움이 될 수 있습니다.
  • 구현 세부 정보 노출 방지: 구현 세부 정보를 노출하면 개체가 밀접하게 결합되어 코드의 다른 부분에 영향을 주지 않고 시스템을 변경하기 어렵게 만들 수 있습니다. 대신 다른 객체가 사용하는 데 필요한 정보만 노출하는 것을 고려하십시오.
  • 디자인 패턴을 사용하여 종속성 관리: 데코레이터 패턴 및 어댑터 패턴과 같은 디자인 패턴은 개체를 분리하고 개체 간의 종속성 수를 줄이는 데 도움이 될 수 있습니다.
  • 개체 간에 불필요한 관계 생성 방지: 두 개체 간의 관계가 실제로 필요한지 여부를 고려하고 필요하지 않은 관계를 생성하지 않도록 합니다.
  • 상속 대신 위임 사용: 상속은 두 클래스 간에 강력한 관계를 생성하므로 다른 클래스에 영향을 주지 않고 한 클래스를 변경하기 어려울 수 있습니다. 반면에 위임을 사용하면 한 개체가 다른 개체에 작업을 위임할 수 있으므로 두 개체를 분리하고 종속성을 줄이는 데 도움이 될 수 있습니다.
  • 단일 책임 원칙 준수: 단일 책임 원칙은 클래스가 변경되는 이유가 하나만 있어야 한다고 명시합니다. 이 원칙을 따르면 개체 간의 종속성 수를 줄이고 시스템을 보다 모듈화하고 수정하기 쉽게 만들 수 있습니다.

다음은 소프트웨어 설계에 Demeter의 법칙을 적용할 때의 장단점입니다.

장점:

  • 복잡성 감소: Demeter의 법칙은 메서드 호출 및 개체 간의 관계 수를 제한하여 시스템의 복잡성을 줄이는 데 도움이 될 수 있습니다. 이렇게 하면 시스템을 더 쉽게 이해하고 유지 관리할 수 있습니다.
  • 모듈성 증가: Demeter의 법칙에 따라 수정 및 재사용이 더 쉬운 더 많은 모듈식 코드를 만들 수 있습니다. 이는 시스템의 유연성과 확장성을 향상시킬 수 있습니다.
  • 테스트 가능성 향상: 개체를 분리하고 개체 간의 종속성을 줄임으로써 시스템을 더 테스트하기 쉽게 만들고 테스트를 위해 개별 구성 요소를 더 쉽게 격리할 수 있습니다.
  • 개발 시간 증가: 데메테르의 법칙을 따르면 더 많은 선행 설계 및 계획이 필요할 수 있으며, 이로 인해 프로젝트 개발 시간이 늘어날 수 있습니다.
  • 재사용 감소: 개체 간의 관계를 제한하면 특정 구성 요소의 재사용도 제한할 수 있으므로 시스템의 다른 부분에서 코드를 재사용하기가 더 어려워질 수 있습니다.

전반적으로 데메테르의 법칙을 따르는 핵심은 객체 간의 종속성을 최소화하고 바로 이웃하고만 통신하는 것입니다. 이렇게 하면 시스템의 복잡성을 줄이고 유지 관리 및 수정을 더 쉽게 할 수 있습니다.

행복한 학습 … 행복한 코딩 … ..

기타 흥미로운 기사:

AWS 학습: 클라우드에서 무한한 기회를 향한 여정 .

휴일 동안 무료로 AWS 클라우드를 배울 수 있는 방법

이해 하기

클라우드 학습을 위한 Linux 명령