Compound Pattern반복적으로 생길 수 있는 일반적인 문제를 해결하기 위한 용도로 두 개 이상의 디자인패턴을 결합하여 사용하는 것이다.또한, 여러 패턴을 같이 사용한다고 해서 compound pattern이 되는 것이 아닌, 문제를 해결하기 위한 용도로 사용하
실제 객체의 생성시간이 오래걸리는 경우 일을 분업하여 간단한 초기 작업을 프록시에서 하고, 가장 중요한 마지막 작업에서 프록시객체는 실제 객체를 생성하고 위임한다.프록시는 실제 서비스와 같은 이름의 메소드를 인터페이스를 사용하여 구현한다.프록시는 실제 서비스에 대한 참
Object의 내부 상태가 바뀜에 따라서 object의 행동을 바꿀 수 있다.마치 object의 class가 바뀌는 것과 같은 결과를 얻을 수 있다.State pattern은 state를 class로 표현한다. 그 이유는, class의 교체를 통해서 state의 변화를
Object group이 단일 object와 동일하게 다루는 것이다.client들이 단일 object와 복합체(composition)들을 동일하게 다룬다.Client가 object들의 composition과 단일 object 사이 차이를 무시해야 할 때 사용한다. 여러
collection의 구현을 드러내지 않으면서도 collection에 있는 모든 object에 대해 반복 작업을 할 수 있다.Interface를 통해서 Array List, HashTable 등 서로 다른 집합 객체 구조에 대해서도 반복자를 구현할 수 있다.리스트 등의
상위 class에서 처리의 흐름을 제어하고, 하위class에서 처리의 내용을 구체화 한다. 여러 class에서 공통되는 사항은 상위 추상 class에서 구현하고, 각각의 세부내용은 하위 class에서 구현한다. 그 결과 코드의 중복을 줄이고, Refactoring에 유
어떤 sub-system의 interface에 대한 통합된 interface를 제공하고 facade에서 고수준 interface를 정의하기 때문에 sub-system을 쉽게 사용할 수 있다.더욱 더 간단한 interface를 만들 수 있다는 것이다. 또한 client부
한 class의 interface를 client에서 필요로 하는 다른 interface로 변환한다. Adapter를 이용하면 interface 호환성문제로 쓸 수 없는 class들을 연결해서 쓸 수 있다.위 그림과 같이 Adapter의 소스만 변경하여 Existing
command pattern을 이용하면 요구사항을 객체로 캡슐화 하여, 요구사항을 나중에 이용할 수 있도록 메소드 이름과 매개변수 등 요구사항에 필요한 정보를 집어넣을 수 있다. 요청내역을 큐에 저장하거나 로그를 기록할 수 있으며, 작업취소 기능도 있다.Client :
Singleton Pattern은 해당 Class의 instance가 하나만 만들어진다.어디서든 그 instance에 접근할 수 있게 한다.class에서 하나뿐인 instance를 관리하게 한다.Instance가 사용될 때 똑 같은 instance를 만드는 것이 아닌,
모든 factory pattern에서는 app의 구상 클래스에 대한 dependency를 줄여줘서 loose-coupling을 도와준다.또한 Object 생성을 encapsulation 한다.주로, Super-class와 다수의 sub-class가 있을 때 input을
상속 또는 interface를 이용하여 Type을 맞춰 객체의 추가적인 요건을 동적으로 추가한다.서브클래스(decorator class)를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제시한다.중요한점은 Decorator는 상속을 통해서 행동을 물려받는
한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들이 자동으로 갱신되는 방식으로 객체들 간에 one-to-many 의존성을 정의한다.객체의 상태 변화를 관찰하는 Observer들을 객체에 등록하여 상태 변화가 있을 경우 객체가 메소드를 통해 Observer들에게
어떤 동작을 하는 알고리즘을 정의하고 각각을 Encapsulation하고 Delegate를 통해서 어떤 행동을 할지 결정하는 패턴이다.Strategy pattern을 이용하면 알고리즘을 사용하는 client는 독립적으로 알고리즘을 변경할 수 있다.상속보다는 구성을 이용
방식을 통해 SW 설계에서 얻은 세세한 경험들을 기록해 놓도록 하는 것으로 특정한 상황에서 구조적인 문제에 대한 해법이라 할 수 있다.그 중에서도 anti-pattern이라는 것이 있는데, 이는 실제로 많이 쓰는 pattern이지만, 비효율적이고, 비생산적인 patte