컴퓨터 공부/디자인 패턴

[7월 6일 2교시] 디자인 패턴의 동기(Motivation)

려리군 2009. 7. 6. 10:40

디자인 패턴은 무엇인가?


각 패턴은 우리 환경에서 많이 발생했던 문제를 묘사하고 그 문제에 대한 해결책의 주요부분을 묘사한다.

그 해결책은 반복해서 사용할 수 있다.

크리스토퍼 알렉산더(건축업자)


Motivation(1)

재사용성, 융통성 있고, 유지보수 가능한 소프트웨어를 설계하는 것은 매우 어렵다.

Skill, Talent, Intelligence가 필요.

창조성, 상상력, 직관력 필요

경험이 중요.

※ 잘 만들어진 코드를 자주 보고 연습하고 경험한다.


디자인 휴리스틱

Abstract class vs Concrete Class

Class Inheritance vs Object Composition

Interface Inheritance vs Implementation Inheritance


패턴의 목적

패턴이 무엇을 하기 위한 것인지 정의

Creational Patterns : 객체 생성과정이나 초기화에 관여

Structural Patterns : 클래스나 객체의 합성에 관한 패턴

Behavioral Patterns : 상호작용 방법과 책임을 분산.

※ 옵저버 패턴 : MFC의 document-view에서 view를 옵저버라고 함.


디자인 패턴 공간

패턴의 scope - class, object


※ 재개발은 비싸다. refactoring -> full test를 다시한다.


변화에 대한 디자인 패턴

융통성 : 변화를 수용할 수 있다.


특정 클래스로부터 객체 생성 : abstract factory, factory, prototype

플랫폼에 종속적 : abstract factory, bridge

객체 표현이나 구현의 종속성 : abstract factory, bridge, memento, proxy


결합도 : 추상도를 높이면 낮은 결합도의 시스템을 만들 수 있다.

Abstract Factory, Bridge, Chain of Responsibility, Command, Facade, Mediator, Observer


클래스 변경이 편하지 못한점.

Adarptor, Decorator...


디자인 패턴의 장점.

추상화가 좋고.

설계 향상.

커뮤니케이션 향상.

연습


디자인 패턴 형태

Architectural Pattern

Design Pattern

Idioms


프레임워크는 무엇인가?

라이브러리 코딩 : 프로그래밍은 내가 함. 라이브러리(API)를 호출함.

예) Win32

프레임워크 코딩 : 틀이 잡혀져 있고. (사용자 특정 객체)코드의 빈 부분을 채워간다. 실제 호출은 프레임워크가 한다.

예) MFC

Domain-specific

반은 완성된(Semi-complete) 응용프로그램


프레임워크 사용 이유?

디자인의 재사용

코드의 재사용

강력한 생산 파라미터화

프레임워크 : 비슷한 응용프로그램

빠른 코드가 가능하다.


디자인 패턴 세부 분류(Catalog)

...


디자인 패턴 개념

디자인 패턴은 클래스 라이브러리가 아니다.

클래스 라이브러리 안에서 디자인 패턴을 사용

프로그램을 완성품으로 보지 않는다.

다이어그램은 읽는 것이다. (클래스 다이어그램, 시퀀스 다이어그램)

스스로 패턴의 예제를 생각해 본다. (세미나 형식이 좋음)

Class Diagram, Sequence Diagram