2012.05.22 09:49

출처 : http://99yurina.blog.me/20156605313 


객체지향 원칙
바뀌는 부분은 캡슐화 한다.
상속보다는 구성을 활용한다.
구현이 아닌 인터페이스에 맞춰서 프로그래밍한다.
서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다.
클래스는 확장에 대해서는 열려 있지만 변경에 대해서는 닫혀 있어야 한다.(OCP)
추상화된 것에 의존하라. 구상 클래스에 의존하지 않도록 한다.
어떤 클래스가 바뀌게 되는 이유는 한가지 뿐이어야만 한다.

 

 

 

PatternDesc.
Strategy기본정의 : 
알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다.

- 알고리즘의 각 단계를 구현하는 방법을 서브클래스에서 구현합니다.
- 교환 가능한 행동을 캡슐화하고 위임을 통해서 어떻게 행동을 사용할지 결정
Observer기본정의 : 
한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱식되는 방식으로 일대다 의존성을 정의한다.

- 어떤 상태가 변경되었을 때 일련의 객체들한테 연락을 할 수 있습니다.
Decorator기본정의 : 
객체에 추가 요소를 동적으로 더할 수 있습니다. 
서브 클래스를 만드는 경우에 비해 훨씬 유연하게 기능을 활장할 수 있습니다.

- 객체를 감싸서 새로운 행동을 제공
- 컬렉션이 어떤 식으로 구현되었는지 드러내진 않으면서도
  컬렉션 내에 있는 모든 객체에 대해 반복 작업을 처리
Abstract Factory기본정의 : 
서로 연관된, 의존적인 객체들로 이루어진 제품군을 생성하기 위한 인터페이스를 제공합니다.
Factory Method기본정의 : 
객체를 생성하기 위한 인터페이스를 만듭니다. 
어떤 클래서의 인스턴스를 만들지는 서브클래스에서 결정하도록 합니다.
Singleton기본정의 : 
클래스 인스턴스가 하나만 만들어지도록 하고, 그 인스턴스에 대한 전역 접근을 제공
Command기본정의 : 
요청 내역을 객체로 캡슐화 하여 클라이언트를 서로 다른 요청 내역에 따라 처리.
Adaptor기본정의 : 
클래스의 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환
인터페이스가 호환되지 않아 쓸 수 없었던 클래스들을 같이 사용할 수 있게 해줌

- 하나 이상의 클래스의 인터페이스를 변환합니다
Façade기본정의 : 
서브시스템에 있는 일련의 인터페이스에 대한 통합 인터페이스를 제공.
서브시스템을 더 쉽게 사용할 수 있게 해주는 고수준 인터페이스

- 일련의 클래스들에 대한 인터페이스를 단순화 시킵니다.
Template기본정의 : 
작업 알고리즘의 골격을 정의

- 바꿔 쓸 수 있는 행동을 캡슐화한 다음, 실제 행동은 다른 객체에 위임합니다.
Iterator기본정의 : 
컬렉션을 표현하는 방법을 노출시키지 않으면서도 집합체 내에 있는 모든 객체들에 하나씩 접근

- 컬렉션의 구현을 드러내지 않으면서도 컬렉션에 있는 모든 객체들에 대해 반복작업을 할 수 있습니다.
Composite기본정의 : 
객체들을 트리구조로 구성하여 부분-전체 계층구조를 구현

- 클라이언트에서 객체 컬렉션과 개별 객체를 똑같은 식으로 처리할 수 있습니다.
State기본정의 : 
어떤 상태가 바뀜에 따라 객체의 행동을 바꿀 수 있습니다.
상태를 기반으로 하는 행동을 캡슐화 하고 행동을 현재 상태한테 위임.
Proxy기본정의 : 
다른 객체를 대변하는 객체를 만들어서 주 객체에 대한 접근을 제어 할수 있습니다.
Compound기본정의 : 
두 개 이상의 패턴을 결합하여 일반적으로 자주 등장하는 문제들에 대한 해법을 제공

[출처] Design Pattern|작성자 지우개


Posted by k1rha