Introduction to Design Patterns

Park Young Jun

 

Github : https://github.com/june0313

Y3S Study group : https://github.com/y3s-study

 

2018.07.10

1. Understanding Design patterns

프로그래밍을 쉽게 익히는 방법?

  • 훌륭한 프로그래머가 작성한 코드를 읽는 것

 

  • 프로그래머가 수년간 고생하며 쌓아놓은 경험이 고스란히 녹아 들어 있기 때문

 

 

What Is Design Pattern?

  • 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용 할 수 있는 훌륭한 해결책

  • 이전의 많은 개발자들이 고민하고 정제한 사실상의 표준 설계 패턴

  • 개발 현장에서 비즈니스 요구사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중 많은 사람들이 인정한 Best Practice를 정리한 것

  • 디자인 패턴은 객체 지향 특성과 설계 원칙을 기반으로 구현되어 있다.

Structure of Design Pattern

Context

Problem

Solution

Structure of Design Pattern

Context

Problem

Solution

문제가 발생하는 여러 상황을 기술. 패턴이 적용될 수 있는 상황

패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈. 여러 제약 사항과 영향력도 문제 해결을 위해 고려되어야 함

문제를 해결하도록 설계를 구성하는 요소들과 그 요소들 사이의 관계, 책임, 협력 관계를 기술. 구체적인 방법이나 언어의 의존적이지 않으며 다양한 상황에 적용할 수 있는 템플릿

Structure of Design Pattern Ex

Context

Problem

Solution

클래스가 객체를 생성하는 과정을 제어해야 하는 상황

전역적으로 접근하고 관리할 필요가 있는 데이터를 포함한다. 동시에 이 데이터는 시스템에 유일하다. 어떤 방식으로 생성되는 객체의 수를 하나로 제어할 것인가?

클래스의 생성자를 public으로 하지 말고 private이나 protected로 선언해서 외부에서 생성자를 이용해 객체를 일단 생성할 수 없게 만들고...(생략)

Let's name the soultion

A : 

A : 

B : 

B : 

이 클래스의 객체는 하나만 생성해야 하는데 어떤 방법이 좋을까?

클래스의 생성자를 public으로 하지 말고 private이나 protected로 선언해서 외부에서 생성자를 이용해 객체를 일단 생성할 수 없게 만들고...(생략)

이 클래스의 객체는 하나만 생성해야 하는데 어떤 방법이 좋을까?

싱글턴 패턴을 사용하면 되겠네!

Before naming

After naming

2. GoF's Design Pattern

GoF's Design Pattern

에릭 감마, 리차드 헬름, 랄프 존슨, 존 브리시즈

Gang of Four :

디자인 패턴을 23가지로 정리

 

생성, 구조, 행위의 3가지로 디자인 패턴을 분류

GoF's Design Pattern 분류

생성(Creational) 패턴 객체 생성과 관련된 패턴 
구조(Structural) 패턴 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
행위(Behavioral) 패턴 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴

Creational Patterns

Abstract Factory

Builder

Factory Method

Prototype

Singleton

객체 생성에 관련된 패턴

Structural Patterns

Adapter

Bridge

Composite

Decorator

Facade

Flyweight

Proxy

클래스나 객체를 조합해 더 큰 구조를 만드는 패턴

Behavioral Patterns

Chain of Responsibility

Command

Interpreter

Iterator

Mediator

Memento

객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴

Observer

State

Strategy

Template Method

Visitor

3. UML with Design Patterns

UML로 Design Pattern을 표현하는 방법

Collaboration

  • 디자인 패턴의 구조적인 면을 표현
  • 요소들의 협력 관계를 나타냄

Sequence Diagram

  • 디자인 패턴의 행위적인 면을 표현
  • 협력을 위한 요소들의 상호작용을 나타냄

Collaboration

  • 협력, 협동
  • 객체가 수행하는 역할들의 협력을 표현
  • 역할들의 상호 작용을 추상화
  • Collaboration occurrence는 좀 더 구체적인 상황에서의 콜라보레이션 적용을 표현

Collaboration

Sequence Diagram

  • 객체들의 상호 작용을 나타내는 다이어그램
  • 객체들 사이의 메시지  송신과 그들의 순서를 나타냄

Sequence Diagram

Thank you!

Design Patterns

By Young Jun Park (박영준)

Design Patterns

디자인 패턴에 대한 개략적인 안내입니다.

  • 231