디자인패턴 (Design Pattern)의 종류

디자인패턴 (Design Pattern)의 종류에는 어떤 것들이 있을까요 ?
무엇이 있는지부터 좀 listup 을 하고 하나하나씩 배워보도록 하죠.

일단 현재 알려진 패턴들을 3 가지 그룹으로 분류해보면 다음과 같습니다.

  1. 객체 생성을 위한 디자인 패턴
  2. 구조 개선을 위한 디자인 패턴
  3. 행위 수행 개선을 위한 디자인 패턴

1 번은 class 객체를 생성할 때 확장성이나 유지보수 등을 위해 고려해야하는 패턴들을 묶은 것입니다.
즉, 객체를 생성하는 방법론에 관한 것입니다.
2 번은 객체지향 설계에서 객체나 class 간 상호 관계 및 구조에 대한 것입니다.
즉, 객체 간의 관계가 어떻게 잘 설계되었느냐에 따라 재사용성 및 요구사항 변화에 대한 대응의 용이성 등이 결정되기 때문에 이를 고려한 설계에 대한 이야기입니다.
간단히 예를 들면, 사용자에게 제공하는 API 와 내부 구현을 잘 분리해두면, 내부 구조가 많이 변경되더라도 사용자의 프로그램은 변경할 필요가 없는 경우가 많습니다.

그리고, 3번 마지막은 객체들간에 알고리즘이나 역할을 어떻게 분담하는지, 즉 어떤 행위를 객체 내부의 하나의 개별 멤버 함수가 모두 담당하는 것이 아니라, 객체와 객체의 상호 작용에 의해서 수행을 하게 되는 상황에서 상호간의 결합도(coupling)를 낮추고, 독립성 및 재사용성 등을 확보할 수 있을지에 대한 이야기입니다.

그러면 각 그룹에 속하는 패턴들은 어떤 것들이 있을까요 ?

1. 객체 생성을 위한 디자인 패턴
    ㅇ Singleton(싱글톤) 패턴
    ㅇ Abstract Factory 패턴
    ㅇ Builder 패턴
    ㅇ Factory Method 패턴
    ㅇ Prototype 패턴

2. 구조 개선을 위한 디자인 패턴
    ㅇ Adapter 패턴
    ㅇ Bridge 패턴
    ㅇ Composite 패턴
    ㅇ Decorator 패턴
    ㅇ Facade 패턴
    ㅇ Flyweight 패턴
    ㅇ Proxy 패턴

3. 행위 수행 개선을 위한 디자인 패턴
    ㅇ Chain of Responsibility 패턴
    ㅇ Command 패턴
    ㅇ Interpreter 패턴
    ㅇ Iterator 패턴
    ㅇ Mediator 패턴
    ㅇ Memento 패턴
    ㅇ Observer 패턴
    ㅇ State 패턴
    ㅇ Strategy 패턴
    ㅇ Template Method 패턴
    ㅇ Visitor 패턴

와아... 참 패턴의 종류가 많네요.
패턴에 대한 것을 공부하다보면 각 패턴 별로 구분점이 모호한 경우도 있습니다.
그리고, 프로젝트에서 실제로 설계를 진행할 때도 자신이 설계하는 class 를 정확히 어떤 단일한 패턴 형식으로 만드는 것도 힘들 것입니다.
때로는 몇개의 패턴이 묶인 형태의 class 가 필요할 수 있고, 때로는 하나의 패턴의 특징 중 하나만을 이용해서 만들어도 되는 경우가 있을 것입니다.

패턴을 공부할 때는 암기하듯이 무슨 패턴은 어떤 것이고 또 이 패턴은 어떤 특징이 있고..
이런 식의 공부방법은 추천하지 않습니다.
이런 공부방법은 우리나라 중고등학교 때나 하는 짓이고, 우리는 하나하나의 패턴에 대한 이론을 공부하면서 직접 자신의 고민이 투영된 class 설계를 되도록 많이 해보는 것이 중요합니다.

그래서, 앞으로 제가 진행하게될 강의는 몇 권의 디자인 패턴 책을 공부한 결과로 제 머리속에 정립된 이론을 제 나름의 방식으로 여러분에게 쉽게 풀어서 전달하고, sample 예제 또한 저도 공부한다는 의미로 제가 직접 작성한 것으로 진행할 것입니다.

자 그럼 디자인 패턴 속으로 조금씩 들어가볼까요 ? ^^

You may also like...

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x