
유연한 설계
개방-폐쇄 원칙
- 확장에 대해 열려 있다. 애플리케이션의 요구사항이 변경될 때 이 변경에 맞게 새로운 '동작'을 추가해서 애플리케이션의 기능을 확장할 수 있다.
- 수정에 대해 닫혀 있다. 기존의 '코드'를 수정하지 않고도 애플리케이션의 동작을 추가하거나 변경할 수 있다.
생성과 사용 분리
- 표현적 분해
- 도메인에 존재하는 사물 또는 개념을 표현하는 객체들을 이용해 시스템을 분해하는 것이다.
- 도메인 모델에 담겨 있는 개념과 관계를 따르며 도메인과 소프트웨어 사이의 표현적 차이를 최소하는 것을 목적으로 한다.
- 행위적 분해
- 도메인 개념을 표현한 객체가 아닌 설계자가 편의를 위해 임의로 만든 객체를 이용해 시스템을 분해하는 것이다.
의존성 주입
- 생성자 주입(constructor injection) : 객체를 생성하는 시점에 생성자를 통한 의존성 해결
- setter 주입(setter injection) : 객체 생성 후 setter 메서드를 통한 의존성 해결
- 메서드 주입(method injection) : 메서드 실행 시 인자를 이용한 의존성 해결
의존성 역전 원칙
- 상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안 된다. 둘 모두 추상화에 의존해야 한다.
- 추상화는 구체적인 사항에 의존해서는 안 된다. 구체적인 사항은 추상화에 의존해야 한다.
유연한 설계는 연성이 필요할 때만 옳다
유연성은 항상 복잡성을 수반한다. 유연하지 않은 설계는 단순하고 명확하다. 유연한 설계는 복잡하고 암시적이다. 특정 시점의 객체 구조를 파악하는 유일한 방법은 클래스를 사용하는 클라이언트 코드 내에서 객체를 생성하거나 변경하는 부분을 직접 살펴보는 것뿐이다.
'IT자료실 > 기술서적' 카테고리의 다른 글
오브젝트 - 기술서적 스터디 11단원-합성과 유연한 설계 (0) | 2023.11.02 |
---|---|
오브젝트 - 기술서적 스터디 10단원-상속과 코드의 재사용 (0) | 2023.08.24 |
오브젝트 - 기술서적 스터디 8단원-의존성 관리하기 (0) | 2023.08.08 |
오브젝트 - 기술서적 스터디 7단원-메시지와 인터페이스 (0) | 2023.07.24 |
오브젝트 - 기술서적 스터디 6단원-메시지와 인터페이스 (0) | 2023.07.24 |