흐르는 시간의 블로그...

내용 출처 : Head First Design Pattern - O'REILLY / 한빛미디어 - 서환수 역


Strategy Pattern

알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다.
스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.

아래의 다이어그램은 인터넷에서 가져온 것이다.
aStrategy에 실질적으로 ConcreteStrategy들중 하나가 지정되며, 실행중에 변경될 수 있다



Observer Pattern

한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의 합니다.

주제(Subject) 인터페이스와 옵저버(Observer) 인터페이스가 들어 있는 클래스 디자인을 바탕으로 합니다.








Decorator Pattern


객체에 추가적인 요건을 동적으로 첨가한다.

데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다.

스타버즈 예제에서 처럼 커피에 추가로 첨가물을 넣는 경우나 java의 stream을 사용할 때 decorator pattern이 적용된다.






Factory Method Pattern


객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만듭니다. 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것입니다.

객체 생성을 외부의 다른 어떤 클래스에 맡기게 되는데, 그 클래스의 서브클래스를 통해 실질적인 생성을 하도록 하는 방안으로, 만약 새로운 방식의 객체를 만들게 될 경우 새로운 생성 팩토리를 통해 만들 수 있다.