본문 바로가기
SW 공부/Design Patterns

디자인패턴 공부를 시작하며 /GoF 디자인패턴

by 꼬냉상 2022. 8. 23.

What is pattern?

패턴이란 무엇인가?
- "A solution to a problem in a context”
- "문맥상의 문제에 대한 해결책"

 

Why do we use patterns?

우리는 왜 패턴을 사용하는가?
- Designing reusable object-oriented software
- 재사용 가능한 객체 지향 소프트웨어 설계하기 위해 

- Communication language

- 본인이 전달하고자 하는 내용을 간결하게 전달하는 언어적 기능

 

Category of GoF Patterns

- Gangof 4의 23가지 패턴은 3가지 범주로 분류

Creational (생성)

Address problems of creating an object in a flexible way 
Separate creation from operation/use

운영과 사용을 분리해서 객체 생성 문제 해결

 

Structural (구조)

Address problems of using OO constructs like inheritance to organize classes and objects

클래스 및 개체를 구성하는 문제를 해결

Behavioral (행위)

Address problems of assigning responsibilities to classes 
Suggest both static relationships and patterns of communication

책임을 할당하는 문제를 해결 (정적 관계와 커뮤니케이션 패턴을 제안)

 

Levels of patterns

Architectural pattern - ex) MVC

- fundamental structural organization or schema
-  affects the overall skeletal structure and organization of a software

- 기본 구조 조직 또는 스키마
- 소프트웨어의 전반적인 골격 구조와 조직에 영향을 미칩니다

Design Pattern - ex) Observer

- refine subsystems or components, or relationships between them. 
- does not influence overall system structure, but instead define micro-architectures of subsystems and components

- 하위 시스템이나 구성 요소 또는 이들 간의 관계를 세분화합니다.
- 전체 시스템 구조에 영향을 미치지 않고, 대신 하위 시스템과 구성 요소의 마이크로 아키텍처를 정의합니다.

Coding pattern (or programming idiom) - ex) Counter Pointer

- low-level pattern specific to a programming language
- 프로그래밍 언어에 특화된 낮은 수준의 패턴

 

 

Quiz) O/X 로 답하시오

  (O) 설계 작업에서 설계 패턴의 이름을 통해 보다 명확하게 의사전달을 할 수 있다.

  (O) 설계 패턴은 설계 시 자주 반복되는 문제에 대한 해결책을 담고 있다.

  (X) 아키텍처 패턴은 주로 컴포넌트 내부의 설계에 사용되며, 설계 패턴은 시스템의 전체 구조를 결정하는 데 사용된다.

  (O) 코딩 패턴은 특정한 프로그래밍 언어의 특징에 종속적일 수 있다.

 (X) 설계 패턴은 정확한 요구사항 도출에 도움을 준다

  (O) 설계 회의에서 설계 패턴의 이름은 매우 효과적인 의사소통 수단이 된다.

→  (O) 설계 패턴은 서브시스템이나 컴포넌트의 설계에 사용된다.

  (X) 설계 패턴은 유스케이스 다이어그램을 그릴 때 자주 사용된다.

→  (X) 설계 패턴은 주로 플로우차트에 의해 기술된다.

→  (X) 폭포수 프로세스 모델을 사용할 경우 설계 패턴은 적용될 수 없다.

  (O) 설계 패턴의 적요은 불필요한 복잡성을 추가하고 실행 효율성을 저해할 수도 있다.

  (O) 설계 패턴과 경계가 모호한 코딩 패턴도 존재한다.

  (O) Java 언어의 클래스 라이브러리 자체 설계에 다양한 설계 패턴이 적용되어 있다.

  (O) Java 언어에서의 프로그래머를 위해 이미 클래스 라이브러리로 구현하고 있는 설계 패턴도 있다.

  (X)하나의 클래스에 하나의 설계 패턴 만을 적용하는 것을 SRP라고 한다. 

 

Quiz) 다음 중 생성(creational) 패턴이 아닌 것은?

1. Factory Method Pattern

2. Abstract Factory Pattern

3. Singleton Pattern

4. State Pattern → 행위(Behavioral) Pattern

 

본 글은 개인의 S/W 구조설계 역량 강화를 위한 학습 목적으로 정리된 내용입니다.
일부 타/개인 단체에 저작권이 있는 자료를 포함하고 있으므로, 절대 영리 목적으로 사용하실 수 없습니다.
반응형

댓글