- FlyBehavior Interface
- QuackBehavior Interface
- Duck Class
전략 패턴은 알고리즘 군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 사용할 수 있게 해 줍니다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있습니다
- Subject Interface
- Observer Interface
한 객체의 상태(Subject)가 변화하면 그 객체에 의존하는 다른 객체(Observer)에게 연락이 가고 자동으로 갱신되는 일대다(Many-to-One) 의존성을 정의합니다.
- subject는 observer들이 Observer 인터페이스를 구현한다는 것을 제외하면 observer에 관련해서 아는 것이 없습니다. 그래서 느슨한 결합 입니다. 느슨한 결합을 사용하면, 훨씬 더 유연하고 변화에 강합니다.
- Observer Pattern은 subject가 observer에게 데이터를 보내는 방식(Push), observer가 데이터를 가져오는 방식(Pull)이 있습니다.