자바 프로그래밍 원칙 : Demeter의 법칙
안녕 모두,
오늘 우리는 유명한 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 클라우드를 배울 수 있는 방법
이해 하기

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































