Size: 5015
Comment:
|
← Revision 7 as of 2011-08-09 18:02:39 ⇥
Size: 5017
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 75: | Line 75: |
* DesignPatterns in [Python] : http://www.python.org/workshops/1997-10/proceedings/savikko.html | * DesignPatterns in [[Python]] : http://www.python.org/workshops/1997-10/proceedings/savikko.html |
What is the Design Pattern?
디자인 패턴은 ObjectOrientedDesign시 프로그래머가 쉽게 소스코드를 재사용할 수 있도록 해준다. Douglas C. Schmidt, Ralph E. Johnson, Mohamed Fayad 은 디자인 패턴을 이용하는 것을 이렇게 얘기를 한다. 숙련된 자동차 디자이너들은 자동차를 디자인할 때 물리학의 어떤 법칙을 고려하여 디자인하는 것이 아니라, 이제까지 쌓아왔던 표준적이고 성공적인 디자인 방법과 검증된 결과들을 이용하여 디자인을 한다. 디자인 패턴은 이런 디자이너들이 이용하는 검증되어진 디자인과 같다.
Hierarchy of Pattern.
- Idiom 단계 : 어떤 일을 하기 위해 어떤 과정이 필요할 것이라는 생각. 특정 언어를 고르는 단계..
- Specific Design 단계 : 그 일을 할 수 있는 Solution.
- Standard Design 단계 : Specific Design을 좀더 확장하여 그런 종류의 일을 할 수 있는 Design을 함.
- Design Pattern 단계 : Standard Design의 실제 패턴을 알아냄.
DesignPattern을 사용했을 때의 이익
- 전문성을 얻을 수 있고, 비전문가들도 Standard Form이므로 이해할 수 있다.
- 개발자들 사이에 공통된 언어를 줌으로써 커뮤니케이션을 촉진시킨다.
- “재사용”을 쉽게 성공시킬 수 있다.
- design 수정을 촉진시킨다.
- design documentation을 향상시킨다.
- design에 대한 이해를 향상시킨다.
좋은 Pattern 의 조건
- 문제를 해결해야 한다.
- 증명된 개념을 사용한다.
- 해답이 뻔하지 않아야 한다. 좋은 Pattern은 문제에 대한 해답을 Indirect하게 해결한다.
- 관계에 대해 설명해야 된다. 모듈들에 대해서 설명할 필요는 없으나 System Architecture와 Mechanism을 설명해야 한다.
- Human Component를 많은 부분 차지하여야 한다.
DesignPattern의 분류
- 목적 : 무엇을 위해 패턴화 되었는가
생성( CreationalPatterns )
구조( StructuralPatterns )
행동( BehavioralPatterns )
- 범위 : 패턴이 적용된 대상
- 클래스
- 오브젝트
GoF의 23가지 Design Pattern
Book of DesignPatterns
예전에 인터넷으로 공개되었었으나, 지금은 안되는듯.
관련정보
DesignPatterns in Python : http://www.python.org/workshops/1997-10/proceedings/savikko.html
잡담
디자인 패턴을 많이 공부한 것은 아니지만 그냥 느낀 것이 있어 적어봅니다. 어떤 한 패턴이 '패턴'으로써 존재하기 위해서는 수많은 시행착오와 과정이 있었을 것입니다. 즉 실행이 없는 단순한 머리에서 나온 것은 아닐 것입니다. 그러므로 자신이 만나는 복잡하고 어려운 문제에 대해서 미리 정해져있는 패턴을 끼워맞추기 이전에 자신이 직접 시행착오와 실수를 겪은 후에 '패턴'이 적용되었을때 진정한 '패턴'을 익힐 수 있지 않을까 생각이 듭니다. --picxenk
디자인 패턴을 제대로 공부해 본 것도 아니고, 회사에서 한번 세미나 한 걸로 여기서 설명을 시도한다는게 좀 우습네요..--; 하지만 위키니까 '짜식 이것도 모르네!'라면서 고쳐 주시기 바랍니다. --destine
물론 picxenk말처럼 제대로 익히는 패턴은 실제 자신의 문제가 시행착오를 통해 패턴으로 승화될때 의미가 있을 것이다. 패턴은 프로그램생애의 훨씬 나중에 가서 비로소 등장한다는 얘기도 있다. 그러나, time is too short. 자동차숙련공이 자동차를 만들기위해 온갖시행착오를 겪어야할만큼의 시간이 없다. 패턴에 적용하려고 낑낑대진 않더라도, Refactoring하다가 우와 이거 그패턴아냐? 하면서 나은방향으로 프로그래밍할 수 있슴은 DesignPatterns를 공부해야할 마땅한 이유이다. --yong27, 2003-1-8
See also HowToStudyForProgrammer