[디자인패턴] GOF 디자인 패턴이란?
GOF 디자인 패턴이란?
GoF는 Gang of Four의 약자로 4명의 개발자(에리히 감마(Erich Gamma), 리차드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시디스(John Vissides))로 소프트웨어 개발 영역에서 디자인 패턴을 구체화하고 체계화한 사람들을 말한다.
생성패턴
객체의 생성과 관련된 패턴으로 객체를 직접 인스턴스화 하지 않고 객체를 생성하고 조합하여 캡슐화하고 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공하는 패턴이다.
-
Abstract Factory
- 동일한 주제의 다른 팩토리를 묶어준다.
-
Builder
- 생성과 표기를 분리해 복잡한 객체를 생성한다.
-
Factory Method
- 생성할 객체의 클래스를 구한하지 않고 객체를 생성한다.
-
Prototype
- 기존 객체를 복제함으로써 객체를 생성한다.
-
Singleton
- 한 클래스에 한 객체만 존재하도록 제한한다.
구조패턴
클래스나 객체를 조합하여 더 큰 구조로 확장하는 패턴으로 상속을 사용하여 인터페이스를 구성하고 객체를 작성하여 새로운 기능을 얻는 방법을 정의하여 새로운 기능을 제공하는 패턴이다.
-
Adapter
- 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록, 타 클래스의 인터페이스를 기존 인터페이스에 덧 씌운다.
-
Bridge
- 추상화와 구현을 분리해 둘을 각각 따로 발전시킬 수 있다.
-
Composite
- 0개, 1개 혹은 그 이상의 객체를 묶어 하나의 객체로 이용할 수 있다.
-
Decorator
- 기존 객체의 메서드에 새로운 행동을 추가하거나 오버라이드 할 수 있다.
-
Facade
- 많은 분량의 코드에 접근할 수 있는 단순한 인터페이스를 제공한다.
-
Flyweight
- 다수의 유사한 객체를 생성. 조작하는 비용을 절감할 수 있다.
-
Proxy
- 접근 조절, 비용 절감, 복잡도 감소를 윟 ㅐ접근이 힘든 객체에 대한 대역을 제공한다.
행위패턴
-
Chain of Resp.
- 책임들을 연결하여 내가 책임을 못 질 것 같으면 다음 책임자에게 자동으로 넘어가는 구조
-
Command
- 명령어를 각각 구현하는 것보다 하나의 추상 클래스에 메서드를 하나 만들고 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행하는 것
-
Interpreter
- 문법 규칙을 클래스화한 구조를 갖는 SQL 언어나 통신 프로토콜 같은 것을 개발할 때 사용
-
Iterator
- 반복이 필요한 자료구조를 모두 동일한 인터페이스를 통해 접근할 수 있도록 메서드를 이용해 자료구조를 활용할 수 있도록 해준다.
- 이는 JS의 Interation 프로토콜과 함께 보면 좀 더 이해가 쉽다.
-
Mediator
- 클래스간의 복잡한 상호작용을 캡슐화하여 한 클래스에 위임해서 처리하는 디자인 패턴
-
Memento
- Ctrl + z와 같은 undo 기능 개발할 때 유용한 디자인 패턴으로 클래스 설계 관점에서 객체의 정보를 저장
-
Observer
- 어떤 클래스에 변화가 일어났을 때, 이를 감지하여 다른 클래스에 통보해주는 것
-
State
- 동일한 동작을 객체의 상태에 따라 다르게 처리해야 할 때 사용하는 디자인 패턴
-
Strategy
- 알고리즘 군을 정의하고 각각 하나의 클래스로 캡슐화 한 다음 필요할 때 서로 교환해서 사용할 수 있게 해준다.
-
Template Method
- 상위 클래스에서는 추상적으로 표현하고 그 구체적인 내용은 하위 클래스에서 결정되는 디자인 패턴
-
Visitor
- 각 클래스의 데이터 구조로부터 처리 기능을 분리하여 별도의 Visitor 클래스를 만들어놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 하는 것