성빈
[설계패턴] 객체지향 모델링 (미완) 본문
디자인 패턴
● 디자인 패턴이란?
소프트웨어를 설계할 때 자주 발생하는 문제들에 대한 "재사용 가능한 해결책"
● 디자인 패턴의 이점
- 경험이 많은 소프트웨어 엔지니어들의 이 같은 해법을 재사용
- 공통 언어 역할을 하게 되어, 경험 많은 이들이 이 공통의 언어를 이용하면 그렇지 않을 경우보다 좀 더 효율적으로 협동 작업 가능하다.
- 불필요한 논쟁 시간 줄일 수 있다.
● GoF(Gang of Four)
Design Patterns : Elements of Reusable Object-Oriented Software
에릭 감마(Erich Gamma), 리차드 헬름(Richard Helm), 존 블리자이드(John Vlissides), 랄프 존슨(Ralph Johnson)
● GoF 설계패턴
1) 생성(creational) 패턴
객체의 생성과 관련된 패턴
2) 구조(structural) 패턴
클래스나 객체들을 조합해 더 큰 구조로 만들 수 있게 해주는 패턴
3) 행위(behavioral) 패턴
객체들이 서로 소통하는 방법이나 어떤 태스크, 어떤 알고리즘을 어떤 객체에 할당하는 것이 좋을지를 정의하는 패턴
이러한 패턴들을 사용하여 객체간의 효과적인 상호작용을 가능하게 한다.
● GoF 디자인 패턴의 분류
생성 패턴 | 구조 패턴 | 행위 패턴 | |
패턴 이름 | 추상 팩토리 (Abstract Factory) |
어댑터 (Adapter) |
책임 연쇄 (Chain of Responsibility) |
빌더 (Builder) |
브리지 (Bridge) |
커맨드 (Command) |
|
팩토리 메서드 (Factory Method) |
컴퍼지트 (Composite) |
인터프리터 (interpreter) |
|
프로토타입 (Prototype) |
데커레이터 (Decorator) |
이터레이터 (Iterator) |
|
싱글턴 (Singleton) |
퍼사드 (facade) |
미디에이터 (Mediator) |
|
플라이웨이트 (Flyweight) |
메멘토 (Memento) |
||
프록시 (Proxy) |
옵서버 (Observer) |
||
스테이트 (State) |
|||
스트래티지 (Strategy) |
|||
탬플릿 메서드 (Template Method) |
|||
비지터 (Visitor) |
모델링
● 모델의 역할 : 서로의 해설을 공유하여 합의, 가시화, 시스템을 구축하는 틀
● 모델링 : 모델을 추상화로 만든 것
* 추상화 : 관련있는 점은 부각하고, 관련 없는 것은 무시한다.
UML
시스템을 모델로 표현해주는 언어 (모델링 언어의 대표적인 예)
- 시스템 구조와 동작을 표현하는 13개 다이어그램을 제공한다. ( 다양한 관점에서 모델링하기 위함)
이중 클래스 다이어그램(구조) + 순차 다이어그램(행위) => 설계패턴을 표현
- 현재 UML 2.5버전
- 객체 관련 표준화 기구(OMG) 에서 제인슨 러버 OMT + 이바 야콥슨 OOSE + 그래디 부치 OOAD 방법론을 통합해서 만들었다.