cs

디자인 패턴

ssoonn 2024. 6. 24. 15:46

 

디자인 패턴이란?

  • 객체간 상호관계 등을 이용해 문제를 해결할 수 있도록 규약 형태로 만든 것
  • 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 규약으로 만들어 정리한 패턴

 

디자인 패턴은 라이브러리의 토대가 된다.

 

ex. passport 라이브러리(간편로그인)
서비스를 기반으로 한 로그인은 서비스에서 제공하는 규칙을 지켜야 한다.
개발자가 모든 서비스의 규칙을 작성하기 어려우므로, passport 라이브러리를 주로 사용한다.
passport 라이브러리는 전략 패턴을 구현한 라이브러리 중 하나!

ex. vue.js는 mvn 패턴, spring은 mvc 패턴

 

디자인 패턴의 의의

디자인 패턴을 기반으로, 문제 해결에 영감을 받을 수 있다.

문제 해결을 위한 논의 시 효율적인 의사소통이 가능하다.

 

디자인 패턴의 유형

목적과 범위에 따라 나눠질 수 있다.

  • 목적
    • 생성: 객체의 생성 방식을 결정하는 패턴
    • 구조: 클래스, 객체를 조합해 더 큰 구조를 만드는 패턴
    • 행위: 객체, 클래스 간 알고리즘이나 책임 분배에 관련된 패턴
  • 범위
    • 클래스: 클래스 간 관련성(상속 관계)
      • 컴파일 시 관계가 결정된다.
    • 객체: 객체 간 관련성
      • 일반적으로 구성을 통해 정의된다.
      • 실행시간에 관계가 생성되므로, 더 동적이며 유연하다.

 

디자인 패턴의 종류

생성패턴

  • 객체 생성 방법과 관련된 디자인 패턴
  • 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 크게 영향을 받지 않도록 유연성 제공
  • 싱글톤, 팩토리, 빌더, 원형 등

 

구조패턴

  • 객체, 클래스를 조합해 더 큰 구조를 만드는 디자인 패턴
    • 서로 다른 인터페이스를 지닌 2개 객체를 묶어 단일 인터페이스 제공
    • 서도로 다른 객체를 묶어 새로운 기능 제공
  • 프록시, 적응자, 브리지 등

 

행동패턴

  • 객체나 클래스 간 알고리즘, 책임 할당에 대한 디자인 패턴
    • 한 객체가 혼자 수행 불가한 작업을 어떻게 여러 개의 객체로 분배하는지
    • 분배하며 객체 사이의 결합도를 최소화하는 것에 중점
  • 이터레이터, 옵저버, 전략, 상태, 미디에이터 등

 

 

객체를 어떻게 만들까? 생성패턴

객체를 기반으로 어떻게 하면 효율적인 구조를 만들까? 구조패턴

객체를 기반으로 어떠한 알고리즘이 구현되는데, 어떻게 할 것인가? 행동패턴

 

 

 

ref.

프로그래머가 알아야 할 '디자인 패턴' - velog

 

프로그래머가 알아야 할 '디자인패턴'

Design Pattern

velog.io

[Design Pattern] 디자인 패턴이 정의와 종류 - velog

 

 

[Design Pattern] 디자인 패턴의 정의와 종류

디자인 패턴(Design Pattern)은 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 특정 규약을 만들어서 정리한 패턴입니다.개발의 효율성과 유지보

velog.io

 

Design Patterns in Software Engineering Cheat Sheet - Sumo Coder

 

Design Patterns in Software Engineering: The Ultimate Cheat Sheet

Design patterns in software engineering are reusable solutions to common problems to help with speed and quality

www.sumocoder.com

면접을 위한 CS 전공지식 노트, 주홍철 저, 길벗