1. 오직 한 개만 만들수 있는 객체 -> 싱글톤
2. 자신의 사본을 만드는 가상함수 -> Prototype
3. data의 변화를 여려명에 알려주자 -> Observer, MFC( Doc/View )
4. 기존 클래스의 인터페이스만 변경해서 다른 클래스처럼 보이게 한다.->Adapter, STL stack
5. 그릇은 그릇과 객체를 모두 담을 수 있다. -> Composite ****
6. 객체에 포장을 한다. 포장 후 다시 포장이 가능하다.
기본 기능을 하는 객체와 그 기능을 쉽게 사용 할 수 있게 하는 객체가 있다. -> Decorator
7. 객체를 만드는 공장을 짓자. ? Factory
8. Collection의 모든 요소를 열거하는 객체 -> 반복자
9. Collection 내부를 떠돌아 다니는 객체 -> Visitor ( 하나씩을 돌아다니며 변경 )
10. 기존 객체를 데신하는 역할의 객체를 만들자 -> Proxy
11. 작고 여러 개 만들어지는 객체는 공유해서 사용하자. -> fly weight
12. 프로그램의 전체 틀을 미리 설계해 놓자. ? Application Framework( 창시자 책 )
13. 책임을 다른 곳에 전달해서 하나의 문제를 여러객체가 처리 할수 있도록 하자.
책임전가 ? Chain of Responsibility
14. 알고리즘 자체를 캡슐화 하면 변경이 쉬워 진다. ? 전략 패턴
15. 부모에 비가상함수로 알고리즘을 자식에 protected 가상함수로 알고리즘의 구현을 제공하자.
template method( 메뉴, 아이스크림 )
16. 객체에 사건이 발생시 외부에 전달하는 기법 ? callback, event, signal