본문 바로가기

Design Patterns

[Design Pattern] #1, Design Pattern

반응형


디자인 패턴(Design Pattern)

개발을 도와주는 도구들이 굉장히 많다.

SDK, 라이브러리, API, 패키지, 모듈, 프레임워크 등등 

똑똑한 분들이 많이 만들어놓아서 편하게 쓸 수 있다.


이런게 없다면?

엄청난 삽질과 문제 발생과 개선을 반복해야 된다.


개발하다보면 같은 문제로 똑같이 고생하는 경우도 번번히 있다.

이걸 해결해주는 해결책이 있다. 디자인 패턴.


객체에 대한 개념이 없었을 때, 어땟을까

소프트웨어 규모가 커지면서 복잡해 질수록 문제가 많이 생겼다.


알고리즘이 굉장히 복잡해지고, 
서로 연결되어 실타래처럼 엄청나게 꼬여 있었을 것이다.

객체가 탄생하면서 코드를 재사용하고, 코드를 재정의 하는 등
소프트웨어 세계에 큰 변화가 생겼다.

그로인해 세부적인 로직보다는 
객체 설계를 더 중요하게 생각할수 있었던 것이다.
객체 설계를 잘해놓으면 다시 쓰면 되니깐.

처음엔 잘못된 설계를 방지하기 위해 
핵심적인 내용을 간추린 설계 패턴을 정리해서 교육을 시켰다고 한다.


“각각의 패턴은 우리를 둘러싸고 있는 환경에서 반복적으로 나타나는 특정한 문제와 그에 대한 해결책을 설명한다. 그리고 그 해결책은 계속 사용될 수 있기 때문에 동일한 과정을 반복할 필요가 없다.”


소프트웨어 설계에서 언급되는 디자인 패턴은 원래 건축 분야에서 정립한 개념을 빌려왔다고 한다.

아무튼 중요한 포인트는 
반복되는 문제를 해결할 수 있는 해결책을 설계적으로 도와준다는 것.

패턴을 익히는건 기계적으로 암기하는 것은 의미가 없다.
사용해야 할 시점, 사용한 결과를 완벽히 이해해야 효과를 볼 수 있다.

디자인 패턴을 공부하다보면
어!? 이미 내가 이렇게 구현하고 있었는데?
이런 경우도 있다.

디자인 패턴을 미리 알고 있으면, 개발할 때 훨씬 좋을듯

소프트웨어 디자인 패턴 종류는 굉장히 많다.

그 중에서 Gang of four 패턴이라고 불리는 
디자인 패턴 위주로 공부하려고 한다.

Gang of four 패턴이라고 불리는 이유는
OOPSLA라고 불리는 객체 지향 프로그래밍과 관련된 주제로 열리는 학회가 있다.

1991년 열리는 컨퍼런스에서 고수 4명이 만난다.
고수 4명은 에리히 감마, 리쳐드 햄, 랄프 존슨, 존 블리시데스이다.

이 4명이 저술한 책이 
디자인 패턴 : 재사용 가능한 객체지향 소프트웨어 요소들 이다.

Gang of four 패턴은 크게 3가지 종류로 나뉜다.
생성 패턴
구조 패턴
동작 패턴

이 3가지 패턴안에 여러 패턴들이 있다.

생성 패턴

    • 추상 팩토리 패턴
    • 빌더 패턴
    • 팩토리 메서드 패턴
    • 프로토 타입 패턴
    • 싱글턴 패턴

구조 패턴

    • 어댑터 패턴 
    • 브리지 패턴 
    • 컴포지트 패턴 
    • 데코레이터 패턴 
    • 퍼사드 패턴 
    • 플라이웨이트 패턴 
    • 프록시 패턴

동작 패턴

    • 책임 연쇄 패턴 
    • 커맨드 패턴 
    • Interpreter 패턴
    • Iterator 패턴
    • Mediator 패턴
    • Memento 패턴
    • 옵서버 패턴 
    • State Strategy 패턴
    • Template method 패턴
    • 비지터 패턴

이미 알고 있는 것도 있지만,
하나씩 이해하면서 정리해보려고 한다.

아래는 디자인 패턴 관계도

디자인 패턴 관계도에 대한 이미지 검색결과


참고

http://www.zdnet.co.kr/news/news_view.asp?artice_id=00000039131344&type=det&re=

https://ko.wikipedia.org/wiki/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EB%94%94%EC%9E%90%EC%9D%B8_%ED%8C%A8%ED%84%B4


반응형