본문 바로가기

디자인 패턴(Design Pattern)7

GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 1장 서론(1.7~1.8) [1.7 디자인 패턴을 고르는 방법] -패턴이 어떻게 문제를 해결하는지 파악한다. -패턴의 의도 부분을 본다. -패턴들 간의 관련성을 파악한다. -비슷한 목적의 패턴들을 모아서 공부한다. -재설계의 원인을 파악한다. -설계에서 가변성을 가져야 하는 부분이 무엇인지 파악한다. [1.8 디자인 패턴 사용 방법] 1.전체를 훑는 기분으로 끝까지 한 번 읽는다. 2.다시 처음으로 돌아가 ‘구조(Structure)’, ‘참여자(Participant)’, ‘협력 방법(Collaboration)’ 절을 다시 공부한다. 3.더 확실하게 이해하기 위해서 예제 코드 부분을 살핀다. 4.응용프로그램에 의미 있는 이름으로 패턴의 참여자 이름을 결정한다. 5.클래스를 정의한다. 6.패턴에 정의한 연산에 대해서 응용프로그램에 적.. 2020. 4. 7.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 1장 서론(1.6) [응용 프로그램] 내부 재사용, 유지보수성 및 확장성 [툴킷(toolkit)] 툴킷이란 일반적은 목적의 유용한 기능을 제공하는 재사용 가능한 클래스들의 집합체. 툴킷은 코드 재사용을 강조한 것으로 서브루틴 라이브러리와 동일한 객체지향 라이브러리인 셈이다. [프레임워크(framework)] 프레임워크는 특정한 부류의 소프트웨어에 재사용성을 부여하여 개발할 수 있도록 만들어 주는 관련 클래스들의 집합이다. 프레임워크의 재정의란 프레임워크에 정의한 클래스를 상속받아 특정 응용프로그램을 지원하는 서브클래스를 정의하는 것을 뜻한다. 프레임워크는 응용프로그램에 대한 뼈대를 제공한다. 즉, 프레임워크는 클래스와 객체들의 분할, 전체 구조, 클래스와 객체들 간의 상호작용, 객체와 클래스 조합 방법, 제어 흐름에 대해 .. 2020. 4. 6.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 1장 서론(1.6) [재사용을 실현 가능한 것으로] [상속 대 합성] 객체지향 시스템에서 기능의 재사용을 위해 구사하는 가장 대표적인 기법은 클래스 상속, 그리고 객체 합성(object compostion)이다. 서브클래싱에 의한 재사용을 화이트박스 재사용(white-box reuse). 상속을 받으면 부모 클래스의 내부가 서브클래스에 공개되기 때문에 화이트박스 객체 합성은 클래스 상속에 대한 대안이다. 다른 객체를 여러 개 붙여서 새로운 기능 혹은 객체를 구성하는 것이다. 객체를 합성하려면, 합성에 들어가는 객체들의 인터페이스를 명확하게 정의해 두어야 한다. 블랙박스 재사용(black-box reuse). 객체의 내부는 공개되지 않고 인터페이스를 통해서만 재사용되기 때문이다. 클래스 상속은 컴파일 시점에 정적으로 정의되고.. 2020. 4. 5.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 1장 서론(1.6) [객체 인터페이스의 명세] 객체가 선언하는 모든 연산은 연산의 이름, 매개변수로 받아들이는 객체들, 연산의 반환 값을 명세한다. 이를 연산의 시그니처(signature)라고 한다. 인터페이스(interface)는 객체가 정의하는 연산의 모든 시그니처들을 일컫는 말로 객체의 인터페이스는 객체가 받아서 처리할 수 있는 연산의 집합이다. 타입(type)은 특정 인터페이스를 나타낼 때 사용하는 이름. 다른 인터페이스를 포함하는 인터페이스를 서브타입(subtype), 다른 인터페이스가 포함하는 인터페이스를 슈퍼타입(supertype). 서브타입은 슈퍼타입의 인터페이스를 상속한다. 서브타입이 슈퍼타입을 상속하면, 서브타입은 슈퍼타입에 정의된 연산을 포함하게 된다. 인터페이스 개념은 객체지향 시스템에서 가장 기본적인.. 2020. 4. 4.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 1장 서론(1.5~1.6) [1.5 카탈로그 조직화하기] 패턴을 분류하는 기준은 두 가지입니다. 첫 번째 분류 기준은 목적. 패턴은 생성, 구조, 행동 중의 한 가지 목적을 갖습니다. 생성 패턴은 객체의 생성 과정에 관여하는 것이고, 구조 패턴은 클래스나 객체의 합성에 관한 패턴들입니다. 행동 패턴은 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정의합니다. 두 번째 분류 기준은 범위. 패턴을 주로 클래스에 적용하는지 아니면 객체에 적용하는지를 구분하는 것입니다. 클래스 패턴은 클래스와 서브클래스 간의 관련성을 다루는 패턴입니다. 관련성은 주로 상속이며, 컴파일 타임에 정적으로 결정됩니다. 객체 패턴은 객체 관련성을 다루는 패턴으로서, 런타임에 변경할 수 있으며 더 동적인 성격을 가집니다. 대부분의 패턴들은 어느 정.. 2020. 4. 3.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 1장 서론(1.3~1.4) [1.3 디자인 패턴 기술하기] 설계를 재사용하기 좋게 만들려면 설계를 하기까지의 다양한 결정, 대안, 장단점 등을 고려한 과정도 함께 적어주어야 합니다. -패턴 이름과 분류(Pattern Name and Classification) -의도(Intent) -다른 이름(Also Known As) -동기(Motivation) : 설계 문제를 제시하고, 패턴 안에서 클래스나 객체 구조가 어떻게 문제를 해결하는지 설명해 주는 일종의 시나리오 -활용성(Applicability) -구조(Structure) : 객체 모델링 기법(Object Modeling Technique: OMT)에 기반을 둔 표기법을 이용하여 해당 패턴에서 쓰는 클래스들을 시각적으로 나타냅니다. 또한, 객체 사이에 오가는 요청과 협력 관계의 순.. 2020. 4. 2.