인터페이스
를 제공관련 객체들의 구상 클래스들을 지정하지 않고도 관련 객체들의 모음을 생성할 수 있도록 하는 생성패턴
코드를 그들의 클래스들에 의존시키지 않고 기존 객체들을 복사할 수 있도록 함
클래스에 인스턴스가 하나만 있도록 하면서 이 인스턴스에 대한 전역 접근(엑세스)지점을 제공함.
호환되지 않는 인터페이스를 가진 객체들이 협업할 수 있도록 함.
브리지는 큰 클래스 또는 밀접하게 관련된 클래스들의 집합을 두 개의 개별 계층구조(추상화 및 구현)로 나눈 후 각각 독립적으로 개발할 수 있도록 함.
객체들을 트리 구조들로 구성한 후, 이러한 구조들과 개별 객체들처럼 작업할 수 있도록 함
객체들을 새로운 행동들을 포함한 특수 래퍼 객체들 내에 넣어서 위 행동들을 해당 객체들에 연결시킴
라이브러리에 대한, 프레임 워크에 대한 또는 다른 클래스들의 복잡한 집합에 대한 단순화된 인터페이스를 제공함
각 객체에 모든 데이터를 유지하는 대신 여러 객체들 간에 상태의 공통 부분들을 공유하여 사용할 수 있는 RAM에 더 많은 객체들을 포함할 수 있도록 함
핸들러의 체인(사슬)을 따라 요청을 전달 할 수 있게 해줌.
각 핸들러는 요청을 받으면 요청을 처리할 지 아니면 체인의 다음 핸들러로 전달할지를 결정함.
요청을 요청에 대한 모든 정보가 포함된 독립실행형 객체로 변환함.
이 변환은 다양한 요청들이 있는 메서드들을 인수화 할 수 있도록 하며, 요청의 실행을 지연 또는 대기열에 넣을 수 있도록 하고, 또 실행 취소할 수 있는 작업을 지원할 수 있도록 함.
컬렉션의 요소들의 기본 표현(리스트, 스택, 트리 등)을 노출하지 않고 그들을 하나씩 순회할 수 있도록 함
객체 간의 혼란스러운 의존 관계들을 줄일 수 있음
객체 간의 직접 통신을 제한하고 중재자 객체를 통해서만 협력하도록 함
객체의 구현 세부 사항을 공개하지 않으면서 해당 객체의 이전 상태를 저장하고 복원할 수 있게 해줌.
당신이 여러 객체에 자신이 관찰 중인 객체에 발생하는 모든 이벤트에 대하여 알리는 구독 메커니즘을 정의할 수 있도록 함.
객체의 내부 상태가 변경될 때 해당 객체가 그의 행동을 변경할 수 있도록 함
객체가 행동을 변경할 때 객체가 클래스를 변경한 것처럼 보일 수 있음.
알고리즘들의 패밀리를 정의하고, 각 패밀리를 별도의 클래스에 넣은 후 그들의 객체들을 상호교환할 수 있도록 함
부모 클래스에서 알고리즘의 골격을 정의하지만 해당 알고리즘의 구조를 변경하지 않고 자식 클래스들이 알고리즘의 특정 단계들을 오버라이드(재정의)할 수 있도록 함
알고리즘들을 그들이 작동하는 객체들로부터 분리할 수 있도록 함