관리 메뉴

안까먹을라고 쓰는 블로그

Design Pattern 본문

Miscellaneous

Design Pattern

YawnsDuzin 2013. 5. 10. 17:35

 

반응형

[Design Pattern] - 출처 위키백과

   디자인패턴은 "프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 

  개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재사용하기 좋은 형태로 특정의 규악을

  묶어서 정리한 것이다"


  - 프로그램 개발에 있어서 일정한 코드양식, 구성방식을 의미

  - 선행된 지식을 가지신분들이 만들고 다음은 일정한 코딩 패턴이라고 할 수 있음.

  - 코드의 재활용 가능성을 높이고, 가독성/유지보수 향상, 협업 개발시에 개발자들간 의사소통의

    효율성을 높일 수 있음.


[GOF]

   - the Gang Of Four 의 약어로, Erich Gamma, Richard Helm, Ralph Johnson, John Vissides 4명의

      개발자를 의미함.

   - 이분들이 객체지향을 기반으로 한 디자인패턴을 23개로 정리하였음.


[GOF의 디자인패턴 23종]

1. Iterator   2. Adapter   3. Template Method   4. Factory Method   5. Singleton

6. Prototype   7. Builder   8, Abstract Factory   9. Bridge   10. Strategy 

11. Composite   12. Decorator   13. Visitor   14. Chain of Responsibility   15. Facade

16. Mediator   17. Observer   18. Memento   19. State   20. Flyweight

21. Proxy   22. Command   23. Interpreter



1. 생성패턴 


싱글톤 패턴 : 객체의 생성을 사용자가 원하는 만큼만(n개) 인스턴스가 만들어지고,

또 어디에서든 그 객체에 접근 할 수 있게 해주는 패턴.

 

추상 팩토리 패턴 : 구체적인 클래스를 지정하지 않고 관련성을 갖는 객체들의 집합을 생성하거나, 독립적인 객체들의 집합을 생성할 수 있는 인터페이스를 제공하는 패턴.

 

팩토리 메소드 패턴 : 객체를 생성하기 위해 인터페이스를 정의 하지만,

어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브 클래스가 내리도록 하는 것.

 

빌더 패턴 : 복잡한 객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공할 수 있도록 하는 패턴.

 

프로토 타입 패턴 : 원형의 인스턴스를 이용해서 생성 할 객체의 종류를 명시하고,

원형을 기반으로 복사해서 새로운 객체를 생성하고, 프로토 타입 패턴은 전형적인 복사 패턴으로 데이터는 물론 기능까지 모두 복사하는 패턴이다.

 

2.구조패턴

 

어뎁터 패턴 :클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로 호환성이 없는 인터페이스를 공통의 인터페이스에 맞게 변경하고자 할 때 사용한다.

 

브릿지 패턴 : 추상화 된 부분과 추상 클래스, 인터페이스를 구현한 클래스를,

서로 다른 클래스 계층궂에 집어 넣음으로써 그 둘을 모두 변경 시킬 수 있다.

 

컴포지션 패턴 : 클래스 상속 구현 대신 기존 클래스의 인스턴스를 private필드로 가지는,

새로운 클래스를 만드는 것.

 

데코레이터 패턴 : 객체에 추가적인 요건을 동적으로 첨가, 서브클래스를 만드는 것을 통해서 ,

기능을 유연하게 확장할 수 있는 방법을 제공 한다.

 

퍼사드 패턴 : 특정 행동이나 실행에 관해서 여러 인터페이스의 실행을 위해 상위 인터페이스 하나로써, 실행하게 만드는 패턴.

 

프록시 패턴 : 어떤 객체에 대한 접근을 제어하기 위한 용도로,

대리인이나 대변인에 해당하는 객체를 제공하는 패턴.

 

플라이급 패턴 : Flyweight 패턴은 가능한 한 인스턴스를 공유하여 쓸데없이 new 연산자를 사용하지 않도록 함으로써 객체를 '가볍게 만드는 패턴이다.

이미 만들어져 있는 인스턴스를 공유해서 사용하는 것이 Flyweight 패턴의 핵심이라고 말할 수 있다.

 

 

3.행위패턴

 

스테이트 패턴 : 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다.

마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다.

 

스트래티지 패턴 : 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 또한 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경 할 수 있다.

 

미디에이터 패턴 : 서로 관련된 객체 사이의 복잡한 통신과 제어를 한 곳으로.

집중시키고자 하는 경우에는 미디에이터 패턴을 사용한다.

 

옵저버 패턴 : 한 객체의 상태를 바꾸면 그 객체에 의존하는 다른 객체들한테 연락이 가고,

자동으로 내용이 갱신되는 방식으로 일대다(one to many)의 의존성을 정의한다.

 

메멘토 패턴 : 객체의 상태 정보를 변도의 클래스로 정의하고, 리스트 자료구조에 그 클래스의

객체를 필요한 시점마다 저장 해 두었다가 특정 시점에서 객체의 상태 복원을

쉽게 할 수 있도록만든 클래스 구조

 

이터레이터 패턴 : 컬렉션이 어떤식으로 구현 되었는지 드러내진 않으면서도,

컬렉션내에 있는 모든 객체에 대해 반복작업을 처리 할 수 있게 해준다.

 

템플릿 메소드 패턴 : 객체의 연산에는 알고리즘의 뼈대만을 정의하고 각 단계에서 수행할 구체적 처리는 서브클래스 쪽으로 미룬다. 알고리즘의 구조 자체는 그대로 놔둔 채 알고리즘 각 단계처리를 서브클래스에서 재정의할 수 있게 한다.

비지터 패턴 :  자신의 오퍼레이션의 대상이 되는 요소를 갖는 클래스를 수정하지 않고,

새로운 오퍼레이션을 정의하는 것을 가능하게 한다.

 

인터프리터 패턴 : 언어(script)를 해석하기 위해 문법의 표현 수단을 정의하고 표현 수단을 이용하여 해당 언어로 작성된 문장을 해석하는 해석지의 구조를 정의하는 패턴

 

커맨드 패턴 : 요청을 객체의 형태로 캡슐화하여 서로 요청이 다른 사용자의 매개변수와, 요청 저장, 로깅, 연산의 취소 기능을 지원하는 패턴.

 

역할사슬 패턴 : 요청이 발생했을 때 요청을 처리하는 객체가 하나 이상일 경우 요청을 주는 객체와 받는 객체의 결합도를 낮추는 패턴. 요청을 받는 객체들을 연쇄적 리스트 혹은 트리 구조로 묶고 실제 요청을 처리할 객체를 만날 때까지 순회하여 요청을 전달한다.


.NET Design Pattern http://www.dofactory.com/net/design-patterns

[출처] 각 패턴 요약!|작성자 monk773

반응형

'Miscellaneous' 카테고리의 다른 글

Window Server 2008 Tip  (0) 2013.06.21
방폭등급(Explosion proof)  (1) 2013.06.13
Window Service 등록/삭제  (0) 2013.05.10
[kepware] OPC 제품설명  (0) 2013.04.19
[Factory Automation] 약어정리  (0) 2013.04.19
Comments