본문 바로가기
Java

java - Gof의 디자인 패턴 개론

by sinabeuro 2021. 8. 20.
728x90

디자인 패턴이란 

자주 사용하는 설계 패턴을 정형화해서 이를 유형별로 가장 최적의 방법으로 개발을 할 수 있도록 정해둔 설계 알고리즘과 유사하지만, 명확하게 정답이 있는 형태는 아니며, 프로젝트의 상황에 맞추어 적용이 가능합니다.

 

Gof의 디자인 패턴 

Gof(Gang of Four)의 디자인 패턴은 객체지향 개념에 따른 설계 중 재사용할 경우 유용한 설계를 디자인 패턴으로 정리해 둔 것입니다. 

Gof의 디자인 패턴은 총 23개이며, 이를 잘 이해하고 활용한다면, 경험이 부족하더라도 좋은 소프트웨어 설계가 가능합니다. 목적에 따라 분류할 시 생성 패턴 5개, 구조 패턴 7개, 행위 패턴 11개, 총 23개의 패턴으로 구성됩니다.

아키텍쳐 패턴 vs 디자인 패턴

아키텍쳐 패턴은 디자인 패턴보다 상위 수준의 설계에 사용된다.
아키텍쳐 패턴이 전체 시스템의 구조를 설계하기 위한 참조 모델이라면, 디자인 패턴은 서브시스템에 속하는 컴포넌트들끼리의 관계를 설계하기 위한 참조 모델이다.


생성 패턴

객체를 생성하는 것과 관련된 패턴으로, 객체의 인스턴스 과정을 추상화하는 방법입니다.

객체의 생성과 참조과정을 캡슐화하여 전체 시스템에 미치는 영향을 최소화하고, 코드의 유연성을 높여 준다.

생성 클래스 패턴은 객체를 생성하는 일부를 서브클래스가 담당하도록 하며, 생성 객체 패턴은 객체 생성을 다른 객체에게 위임한다.

Factory Method (클래스)
Singleton (객체)
Prototype (객체)
Builder (객체)
Abstract Factory (객체)

Chaining - gof 패턴에 있는 것은 아니다.

 


구조 패턴

프로그램 내의 자료구조나 인터페이스 구조 등 프로그램 구조를 설계하는데 활용될 수 있는 패턴.
클래스, 객체들의 구성을 통해서 더 큰 구조를 만들 수 있게 해준다.

구조 클래스 패턴은 상속을 통해 클래스나 인터페이스를 합성하고, 구조 객체 패턴은 객체를 합성하는 방법을 정의한다.큰 규모의 시스템에서는 많은 클래스들이 서로 의존성을 가지게 되는데, 이런 복잡한 구조를 개발 하기 쉽게 만들어 주고, 유지 보수하기 쉽게 만들어준다.

Adapter (클래스)
Composite (객체)
Bridge (객체)
Decorator (객체)
Facade (객체)
Flyweight (객체)
Proxy (객체)

 


행위 패턴

클래스나 객체들의 상호작용을 패턴화한 것이다.

행위 패턴은 독립적으로 일을 처리하고자할 때 사용하고, 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 제공한다.

행위 패턴은 하나의 객체로 수행할 수 없는 작업을 여러 객체로 분배하면서 그들 간의 결합도를 최소화할 수 있도록 도와준다.

 

행위 클래스 패턴은 상속을 통해 알고리즘과 제어 흐름을 기술하고, 행위 객체 패턴은 하나의 작업을 수행하기 위해 객체 집합이 어떻게 협력하는지를 기술한다.

Template Method (클래스)
Interpreter (클래스)
Iterator (객체)
Observer (객체)
Strategy (객체)
Visitor (객체)
Chain of responsibility (객체)
Command (객체)
Mediator (객체)
State (객체)
Memento (객체)

 




https://4z7l.github.io/2020/12/25/design_pattern_GoF.html

 

[Design Pattern] GoF(Gang of Four) 디자인 패턴 - HERSTORY

디자인 패턴이란 디자인 패턴은 모듈의 세분화된 역할이나 모듈들 간의 인터페이스 구현 방식을 설계할때 참조할 수 있는 전형적인 해결 방식을 말한다. 디자인 패턴을 통해 설계 문제, 해결 방

4z7l.github.io

 

https://velog.io/@namezin/GoF-design-pattern

 

GoF 디자인 패턴

Gang of Four Design Pattern

velog.io

 

728x90

'Java' 카테고리의 다른 글

java - 데코레이터 패턴(구조 패턴)  (0) 2021.08.23
java - 프록시 패턴(구조 패턴)  (0) 2021.08.23
java - 어댑터 패턴(구조 패턴)  (0) 2021.08.20
java - 싱글톤 패턴(생성 패턴)  (0) 2021.08.20
Java - 자료형(숫자편)  (0) 2021.06.21

댓글