패턴이란?
- 문제에 관한 솔루션
왜 사용해야할까?
- 객체지향 Software와 재사용가능한 소프트웨어 설계는 매우 힘들고 경험 많은 설계자는 이전에 일하면서 증명된 솔루션을 재사용함
- 패턴에 관한 지식을 가지고 있다면 더 유연하고 재사용가능한 Software 개발할 수 있음
- 개발자들 사이에서 좋은 커뮤니케이션에 대한 도구 (common language)
- 누군가 이미 너의 problem을 해결하여 만든 패턴!
디자인 패턴의 3가지 파트
- context : 패턴을 적용하고자 하는 상황 (자주 발생)
- problem : 이루고자 하는 목표 또는 context에서 발생하는 제약사항
- solution : 설계 패턴에서 제시하는 해결책
- 컴포넌트 구조와 그 관계
- 런타임의 메커니즘
※ 예시 : Iterator Pattern
- Context : 객체를 담고 있는 collection이 있음
- Problem : collection 내의 element를 하나씩 꺼내고 싶은데 그때 collection의 implementation은 보여지고 싶지 않음
- Solution : iteration을 가진 독립된 class를 만들어서 캡슐화
GoF Patterns 분류
- 목적에 따라 분류
- 생성(Creational) : 생성 작업을 클라이언트가 아닌 다른 객체가 담당. new라는 연산자 없이 객체 생성 가능
- 구조(Structural) : 객체를 조합해서 더 큰 객체를 만들고 싶거나 조직화하고 싶은 경우
- (Behavioral) : 책임을 어떤 클래스에 줘야하는가? 클래스 간의 static한 관계나 커뮤니케이션 방식을 정의
- Scope에 따라 분류
- Class : 클래스의 관계만을 이용
- Object : 객체들의 관계만을 이용
디자인 패턴의 주요 구성 요소
- 패턴명 : 디자인 의도를 간결하게 전달할 수 있음
- Intent : 이 패턴의 의도
- Problem : 패턴이 해결해야할 문제
- Solution : 추상적인 설명. 어떤 역할의 클래스가 있어야 하고 그들의 관계는 어떤지
- Participants and collaborators : 패턴에 참여하는 개체들
- Consequences : 패턴 사용에 의한 장단점 (재사용성, 확장성 등)
- Implementation : 특정 플랫폼, 언어에 대한 예시
- Generic structure : UML 등을 통해 패턴의 일반적인 구조 설명
패턴의 Level
- Architectural pattern
- SW의 구조적인 스키마를 정할 때 사용하는 패턴
- 잘 정의된 서브시스템, 그들의 책임 등을 가이드함
- ex) MVC 패턴
- Design pattern (:= micro-architecture pattern)
- 서브시스템 또는 컴포넌트, 또는 그들의 관계를 정제
- 전반적인 시스템 구조에 영향을 미치지 않음.
- ex) Observer 패턴
- Coding pattern(or programming idiom)
- 특정 언어에 종속되어있는 패턴
- ex) Counter Pointer
반응형
'💻 개발IT > Design Patterns' 카테고리의 다른 글
3. Behavior 패턴 - State Pattern (0) | 2022.03.01 |
---|---|
3. Behavior 패턴 - Iterator Pattern (0) | 2022.02.28 |
3. Behavior 패턴 - Template Method Pattern (0) | 2022.02.28 |
3. Behavior 패턴 - Observer Pattern (0) | 2022.02.27 |
3. Behavior 패턴 - Strategy Pattern (0) | 2022.02.27 |
2. 객체지향 개념과 설계원칙 - GRASP Principle (0) | 2022.02.24 |
2. 객체지향 개념과 설계원칙 - SOLID Principle (0) | 2022.02.23 |
2. 객체지향 개념과 설계 원칙 - 객체지향 패러다임 (0) | 2022.02.07 |