4. 디자인패턴
학습목표 2
4.1 디자인패턴의 이해 크리스토퍼 알렉산더 Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. 바퀴를 다시 발명하지 마라 (Dont reinvent the wheel) 패턴은 비슷하거나 동일한 양식 또는 유형들이 반복되어 나타난다는 의미이며, 문 제와 해결책도 동일한 유형이나 양식을 통해 쉽게 찾을 수 있다. 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제 들이 발생했을 때 재사용할 수 있는 훌륭한 해결책 3
디자인 패턴 구조 콘텍스트 : 문제가 발생하는 여러 상황을 기술한다. 즉, 패턴이 적용될 수 있는 상황을 나타낸다. 경 우에 따라서는 패턴이 유용하지 못하는 상황을 나 타내기도 한다. 문제 : 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈들을 기술한다. 이때 여러 제약 사항 과 영향력도 문제 해결을 위해 고려해야 한다 해결 : 문제를 해결하도록 설계를 구성하는 요소들 과 그 요소들 사이의 관계, 책임, 협력 관계를 기 술한다. 해결은 반드시 구체적인 구현 방법이나 언어에 의존적이지 않으며 다양한 상황에 적용할 수 있는 일종의 템플릿이다. 4
디자인 패턴의 구조 콘텍스트 : 클래스가 객체를 생성하는 과정을 제어해야 하는 상황 문제 : 애플리케이션이 전역적으로 접근하고 관리할 필요가 있는 데이터를 포함한다. 동시에 이러한 데이터는 시스템에 유일하다. 어떤 방식으로 클래스에서 생성되는 객체 의 수를 제어하고 클래스의 인터페이스에 접근하는 것을 제어해야 하는가 ? 해결 : 클래스의 생성자를 public 으로 정의하지 말고 private 이나 protected 로 선언해 외 부에서 생성자를 이용해 객체를 일단 생성할 수 없게 만들고 ( 이하 생략 ). 5 싱글톤 패턴
GoF 디자인 패턴 GoF(Gang of Four) 감마 / 리차드 헬름 / 랄프 존슨 / 존 블리시디시 생성 패턴 : 객체의 생성에 관련된 패턴 구조 패턴 : 클래스를 조합해 더 큰 구조를 만드는 패턴 행위 패턴 : 알고리즘이나 책임의 분배에 관한 패턴 6
4.3 UML 과 디자인 패턴 컬레보레이션을 통해 디자인 패턴 기술 역할들의 상호작용을 추상화 7
컬레보레이션 어커런스 8
순차 다이어그램 객체들 사이의 메시지 송신과 그들의 순서 9
메시지 10
체크포인트 그림 4-8 의 순차 다이어그램에 해당하는 코드를 작성하라. 다음 순차 다이어그램에 해당하는 코드를 작성하라. 11
프레임 12
상호작용 13
alt 14
loop 15
순차 다이어그램과 클래스 다이어그램 16