[Object] 09. 유연한 설계


유연한 설계

개방-폐쇄 원칙

소프트웨어 개체는 확장에 대해 열려있어야하고 수정에 대해서는 닫혀 있어야 한다. 컴파일 타임 의존성을 고정시키고 런타임의존성을 변경하라.
이 말인 즉, 추상화에 의존하라는 것이다.
변하는 부분은 고정하고 변하지 않는 부분은 생략하는 추상화 메커니즘이 개방-폐쇄 원칙의 기반이 된다.

생성 사용 분리

8장에서 나왔듯, 시작단계와 실행단계를 분리한다. client에서 객체를 생성하도록 한다.
만약 client도 특정 컨텍스트에 묶이지 않기를 바란다면 Factory Pattern을 이용해 객체 생성에 특화된 객체(Factory)를 만든다.

의존성 주입

사용하는 객체가 아닌 외부의 독립적인 객체가 인스턴스를 생성한 후 의존성을 해결하는 방법을 의존성 주입이라고한다.

  • 생성자 주입
  • setter 주입
  • 메서드 주입

의존성 역전 원칙 (IoC)

상위수준 모듈은 하위수준 모듈에 의존해서는 안된다. 추상화에 의존해야한다.
추상화는 구체적인 사항에 의존해서는 안된다. 구체적인 사항은 추상화에 의존해야한다.

왜 ‘의존성 역전’인가?

전통적인 소프트웨어 개발 방법에서는 상위수준 모듈이 하위수준 모듈에 의존하고, 정책이 구체적인것에 의존하는 경향이 있었다. 이때문에 Martin은 잘 설계된 객체지향 프로그램의 의존성 구조는 전통적인 절차적 방법에 의한 의존성 구조에 역전된다고 하여 의존성 역전 이라는 용어가 나왔다고 한다.
(그런데.. 직관적인 단어는 아닌거같아요 마틴아저씨 ㅠㅠ)




© 2020. by berrrrr

Powered by berrrrr