출처 : http://99yurina.blog.me/20156605313
객체지향 원칙 |
바뀌는 부분은 캡슐화 한다. |
상속보다는 구성을 활용한다. |
구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. |
서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다. |
클래스는 확장에 대해서는 열려 있지만 변경에 대해서는 닫혀 있어야 한다.(OCP) |
추상화된 것에 의존하라. 구상 클래스에 의존하지 않도록 한다. |
어떤 클래스가 바뀌게 되는 이유는 한가지 뿐이어야만 한다. |
Pattern | Desc. |
Strategy | 기본정의 : 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. - 알고리즘의 각 단계를 구현하는 방법을 서브클래스에서 구현합니다. - 교환 가능한 행동을 캡슐화하고 위임을 통해서 어떻게 행동을 사용할지 결정 |
Observer | 기본정의 : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱식되는 방식으로 일대다 의존성을 정의한다. - 어떤 상태가 변경되었을 때 일련의 객체들한테 연락을 할 수 있습니다. |
Decorator | 기본정의 : 객체에 추가 요소를 동적으로 더할 수 있습니다. 서브 클래스를 만드는 경우에 비해 훨씬 유연하게 기능을 활장할 수 있습니다. - 객체를 감싸서 새로운 행동을 제공 - 컬렉션이 어떤 식으로 구현되었는지 드러내진 않으면서도 컬렉션 내에 있는 모든 객체에 대해 반복 작업을 처리 |
Abstract Factory | 기본정의 : 서로 연관된, 의존적인 객체들로 이루어진 제품군을 생성하기 위한 인터페이스를 제공합니다. |
Factory Method | 기본정의 : 객체를 생성하기 위한 인터페이스를 만듭니다. 어떤 클래서의 인스턴스를 만들지는 서브클래스에서 결정하도록 합니다. |
Singleton | 기본정의 : 클래스 인스턴스가 하나만 만들어지도록 하고, 그 인스턴스에 대한 전역 접근을 제공 |
Command | 기본정의 : 요청 내역을 객체로 캡슐화 하여 클라이언트를 서로 다른 요청 내역에 따라 처리. |
Adaptor | 기본정의 : 클래스의 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환 인터페이스가 호환되지 않아 쓸 수 없었던 클래스들을 같이 사용할 수 있게 해줌 - 하나 이상의 클래스의 인터페이스를 변환합니다 |
Façade | 기본정의 : 서브시스템에 있는 일련의 인터페이스에 대한 통합 인터페이스를 제공. 서브시스템을 더 쉽게 사용할 수 있게 해주는 고수준 인터페이스 - 일련의 클래스들에 대한 인터페이스를 단순화 시킵니다. |
Template | 기본정의 : 작업 알고리즘의 골격을 정의 - 바꿔 쓸 수 있는 행동을 캡슐화한 다음, 실제 행동은 다른 객체에 위임합니다. |
Iterator | 기본정의 : 컬렉션을 표현하는 방법을 노출시키지 않으면서도 집합체 내에 있는 모든 객체들에 하나씩 접근 - 컬렉션의 구현을 드러내지 않으면서도 컬렉션에 있는 모든 객체들에 대해 반복작업을 할 수 있습니다. |
Composite | 기본정의 : 객체들을 트리구조로 구성하여 부분-전체 계층구조를 구현 - 클라이언트에서 객체 컬렉션과 개별 객체를 똑같은 식으로 처리할 수 있습니다. |
State | 기본정의 : 어떤 상태가 바뀜에 따라 객체의 행동을 바꿀 수 있습니다. 상태를 기반으로 하는 행동을 캡슐화 하고 행동을 현재 상태한테 위임. |
Proxy | 기본정의 : 다른 객체를 대변하는 객체를 만들어서 주 객체에 대한 접근을 제어 할수 있습니다. |
Compound | 기본정의 : 두 개 이상의 패턴을 결합하여 일반적으로 자주 등장하는 문제들에 대한 해법을 제공 [출처] Design Pattern|작성자 지우개 |
'Design Pattern' 카테고리의 다른 글
[ 디자인 패턴 ] 어뎁터 패턴 ( Adapter pattern ) (2) | 2012.05.22 |
---|---|
[생성 패턴] 프로토 타입 패턴 (ProtoType Pattern) (1) | 2012.05.22 |
[생성패턴] 빌더 패턴 (Builder Pattern) (0) | 2012.05.19 |
옵저버 디자인 패턴 (Observer Disign pattern) (0) | 2012.05.03 |
UML 작성법에 관하여 (Writing about UML) (0) | 2012.04.29 |