-단단한
깨끗한 코드로 유명한 Robert Martin은 좋은 객체 지향 설계의 5가지 원칙을 요약합니다.
1. 개인 책임의 SRP 원칙
- 클래스는 단 하나의 책임만 가집니다.
- 책임: 맥락과 상황에 따라 모호하거나 더 크거나 작음
- 중요한 기준이 변경됩니다! 파급 효과가 작을 때 변화가 있으면 OK입니다.
2. OCP 개폐 원리
- 소프트웨어 요소는 확장에는 열려 있어야 하지만 수정에는 닫혀 있어야 합니다.
- 다형성을 사용하여 지속할 수 있습니다.
- 인터페이스를 구현하는 새 클래스를 만들어 새 기능을 구현합니다.
- 문제
- 구현 개체를 변경하려면 클라이언트 코드를 변경해야 합니다.
- 분명히 다형성을 사용했는데 이 원칙을 지키지 못한다???
- 객체를 생성하고 관계를 설정하려면 별도의 어셈블리와 세터가 필요합니다 => Spring이 이를 수행합니다!!
3. LSP-리스코프 대체 원리
- 프로그램 개체는 프로그램 정확성을 손상시키지 않고 하위 유형의 인스턴스를 변경할 수 있어야 합니다.
- 다형성에서 하위 클래스는 다형성을 지원하는 모든 인터페이스 규칙 및 원칙을 따라야 하며 인터페이스를 구현하는 구현은 이러한 원칙을 신뢰하고 사용하기 위해 필요합니다.
4. ISP 인터페이스 분리 원칙
- 특정 클라이언트에 대한 여러 인터페이스가 하나의 일반 인터페이스보다 낫습니다.
- 차량 인터페이스를 주행 인터페이스와 정비 인터페이스로 분리
- 사용자 클라이언트를 운전자 클라이언트와 정비사 클라이언트로 분리
- 이것은 인터페이스를 더 명확하고 상호 교환 가능하게 만듭니다.
5. DIP 종속성 역전의 원리
- 프로그래머는 구체화가 아니라 추상화에 의존해야 합니다.
- 구현 클래스에 의존하지 말고 인터페이스에 의존해야 합니다.