Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- TypeScript
- wireshark
- MongoDB
- Express
- typeorm
- docker
- linux
- OOAD
- python
- macos
- css
- mysql
- Crawling
- Android
- node.js
- algorithm
- DATABASE
- postman
- mongoose
- Util
- Kotlin
- HTML
- AWS
- sequelize
- OS
- Network
- ubuntu
- S3
- Scheduling
- React
Archives
- Today
- Total
Seongwon Lim
[Design Pattern] GoF 디자인 패턴이란? 본문
반응형
서론
이번 글에서는 디자인 패턴의 개념과 GoF 디자인 패턴의 개념 및 종류를 간단하게 살펴보고자 한다.
Design Pattern
객체 지향 프로그래밍을 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴으로, 과거 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여 이후에 재사용하기 좋은 형태로 특정 규약을 묶어 정리한 것이다.
조금 더 쉽게 설명하면, 설계 시 구조적인 문제를 해결하는 방법들을 이름을 붙여놓은 것이라고 생각할 수 있다.
Design Pattern의 필요성
- 프로그래밍 설계 시 복잡한 구조를 한 단어로 정의했기 때문에, 개발자 간 협업 시 원활한 의사소통이 가능하다.
- 소프트웨어 구조의 파악이 용이하다.
- 재사용성이 보장되므로 개발 시간을 단축시킬 수 있다.
- 설계를 변경해야 하는 일이 있을 때 효율적으로 코드를 개선할 수 있다.
하지만, 디자인 패턴은 객체 지향 프로그래밍을 설계(구현) 하는 경우에 국한되어 사용된다는 단점도 존재한다.
GoF Design Pattern
GoF(Gang of Four) 디자인 패턴은 4명의 컴퓨터 공학자에 의해 3개 분류, 23가지로 정리된 소프트웨어 디자인 패턴으로 1994년 "Design Pattern: Elements of Reusable Object-Oriented Software" 라는 이름의 책으로 출판되었다.
- 책의 저자는 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 이다.
GoF 디자인 패턴의 3가지 종류는 생성 패턴(Creational Pattern), 구조 패턴(Structural Pattern), 행위 패턴(Behavioral Pattern) 으로 나눌 수 있다.
- 생성 패턴(Creational Pattern) : 객체를 생성하는데 관련된 패턴으로, 객체가 생성되는 과정의 유연성을 높이고 코드의 유지를 쉽게하기 위해 사용된다.
- 구조 패턴(Structural Pattern) : 프로그램 구조(클래스와 객체)에 관련된 패턴으로, 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램의 구조를 설계하는데 활용하기 위해 사용된다.
- 행위 패턴(Behavioral Pattern) : 반복적으로 사용되는 객체들의 상호작용을 패턴화 하기 위해 사용된다.
각 패턴에서 사용하는 종류는 다음과 같다.
생성 패턴(Creational Pattern) | 구조 패턴(Structural Pattern) | 행위 패턴(Behavioral Pattern) |
추상 팩토리(Abstract Factory) | 어댑터(Adaptor) | 책임 연쇄(Chain of Responsibility) |
빌더(Builder) | 브리지(Bridge) | 커맨드(Command) |
팩토리 메서드(Factory Method) | 컴퍼지트(Composite) | 인터프리트(Interpreter) |
프로토타입(Prototype) | 데커레이터(Decorator) | 템플릿 메서드(Template Method) |
싱글턴(Singleton) | 퍼사드(Façade) | 이터레이터(Iterator) |
플라이웨이트(Flyweight) | 미디에이터(Mediator) | |
프록시(Proxy) | 메멘토(Memento) | |
옵저버(Observer) | ||
스테이트(State) | ||
전략(Strategy) | ||
비지터(Visitor) |
다음 글에서는 3 종류의 패턴에서 많이 사용되는 패턴들을 차례대로 알아볼 예정이다.
출처
'OOAD' 카테고리의 다른 글
[UML] 유스케이스 다이어그램(Usecase Diagram) 완벽 정리 (1) | 2022.09.15 |
---|---|
[OOP] 객체지향 설계 원칙 SOLID - OCP(개방 폐쇄 원칙) 이란? (0) | 2022.09.05 |
[OOP] 객체지향 설계 원칙 SOLID - SRP(단일 책임 원칙) 이란? (0) | 2022.09.02 |
[OOAD] 결합도(Coupling) & 응집도(Cohesion) (0) | 2022.07.03 |
[OOAD] GRASP Pattern이란? (0) | 2022.05.24 |
Comments