• decorationPatterns
    1. OCP(Open-Closed Principle(원칙))
      • 디자인 원칙
      • 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다.
      • 무조건 OCP를 적용하는 것은 시간 낭비가 될 수도 있고, 괜히 쓸 데 없는 일을 하는 것일 수도 있습니다.
      • 결과적으로 불필요하게 복잡하고 이해하기 힘든 코드만 만들게 되는 부작용이 있을 수도 있으니 주의해야합니다.
    2. Decorator Pattern의 정의
      • 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다. (즉 자신이 장식하고 있는 객체에게 어떤 행동을 위임하는 것 외에 원하는 추가적인 작업을 수행할 수 있습니다.)
      • 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다.
      • 한마디로 기존 구현되어있는 클래스에 기능을 추가하기위한 패턴이다.
    3. 자바 I/O API에서의 데코레이션 패턴
      • java.io 패키지의 많은 부분이 데코레이터 패턴을 바탕으로 만들어져있다.
      • InputStream(추상) < FileInputStream(추상) < BufferedInputStream(구현) < LineNumberInputStream(구현) -
    4. 데코레이션 패턴의 단점
      • 위에서도 언급했듯이 데코레이션패턴을 이용해서 디자인하다보면 잡다한 클래스들이 너무 많아지게 된다.