조영호 님의 "오브젝트" 책을 정리한 글입니다. 1. 개방-폐쇄 원칙컴파일타임 의존성을 고정시키고 런타임 의존성을 변경하라개방-폐쇄 원칙기존의 코드를 수정하지 않고도 애플리케이션의 동작을 확장할 수 있는 설계컴파일타임 의존성은 유지하면서 런타임 의존성의 가능성을 확장하고 수정할 수 있는 구조 추상화가 핵심이다항목내용핵심추상화에 의존하는 것확장 방식상속을 통해 생략된 부분을 구체화확장의 기반추상화는 생략된 부분을 통해 확장의 여지를 남김폐쇄를 가능하게 하는 요소의존성의 방향의존성 방향이 향해야 할 곳구현이 아닌 추상화 계층 public abstract class DiscountPolicy { private List conditions = new ArrayList(); public DefaultD..