디자인 패턴이란?
- 객체간 상호관계 등을 이용해 문제를 해결할 수 있도록 규약 형태로 만든 것
- 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 규약으로 만들어 정리한 패턴
디자인 패턴은 라이브러리의 토대가 된다.
ex. passport 라이브러리(간편로그인)
서비스를 기반으로 한 로그인은 서비스에서 제공하는 규칙을 지켜야 한다.
개발자가 모든 서비스의 규칙을 작성하기 어려우므로, passport 라이브러리를 주로 사용한다.
passport 라이브러리는 전략 패턴을 구현한 라이브러리 중 하나!
ex. vue.js는 mvn 패턴, spring은 mvc 패턴
디자인 패턴의 의의
디자인 패턴을 기반으로, 문제 해결에 영감을 받을 수 있다.
문제 해결을 위한 논의 시 효율적인 의사소통이 가능하다.
디자인 패턴의 유형
목적과 범위에 따라 나눠질 수 있다.
- 목적
- 생성: 객체의 생성 방식을 결정하는 패턴
- 구조: 클래스, 객체를 조합해 더 큰 구조를 만드는 패턴
- 행위: 객체, 클래스 간 알고리즘이나 책임 분배에 관련된 패턴
- 범위
- 클래스: 클래스 간 관련성(상속 관계)
- 컴파일 시 관계가 결정된다.
- 객체: 객체 간 관련성
- 일반적으로 구성을 통해 정의된다.
- 실행시간에 관계가 생성되므로, 더 동적이며 유연하다.
- 클래스: 클래스 간 관련성(상속 관계)
디자인 패턴의 종류
생성패턴
- 객체 생성 방법과 관련된 디자인 패턴
- 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 크게 영향을 받지 않도록 유연성 제공
- 싱글톤, 팩토리, 빌더, 원형 등
구조패턴
- 객체, 클래스를 조합해 더 큰 구조를 만드는 디자인 패턴
- 서로 다른 인터페이스를 지닌 2개 객체를 묶어 단일 인터페이스 제공
- 서도로 다른 객체를 묶어 새로운 기능 제공
- 프록시, 적응자, 브리지 등
행동패턴
- 객체나 클래스 간 알고리즘, 책임 할당에 대한 디자인 패턴
- 한 객체가 혼자 수행 불가한 작업을 어떻게 여러 개의 객체로 분배하는지
- 분배하며 객체 사이의 결합도를 최소화하는 것에 중점
- 이터레이터, 옵저버, 전략, 상태, 미디에이터 등
객체를 어떻게 만들까? 생성패턴
객체를 기반으로 어떻게 하면 효율적인 구조를 만들까? 구조패턴
객체를 기반으로 어떠한 알고리즘이 구현되는데, 어떻게 할 것인가? 행동패턴
ref.
[Design Pattern] 디자인 패턴이 정의와 종류 - velog
Design Patterns in Software Engineering Cheat Sheet - Sumo Coder
면접을 위한 CS 전공지식 노트, 주홍철 저, 길벗
'cs' 카테고리의 다른 글
TCP/IP 4계층 (1) | 2024.06.30 |
---|---|
Quiz: 디자인패턴과 라이브러리/프레임워크 (1) | 2024.06.24 |
라이브러리 vs 프레임워크 (0) | 2024.06.24 |
앱 디렉터리와 앱 라우터 (0) | 2024.04.17 |
styleX (0) | 2024.04.17 |