KT에이블스쿨 5기/정보처리기사

[정보처리기사 실기] GOF(Gang of Four) 디자인패턴

ryuming 2024. 4. 14. 18:06

[정보처리기사 실기] GOF(Gang of Four) 디자인패턴

 

안녕하세요 에이블러여러분

이번엔 디자인패턴 GOF 개념입니다

필기할때 외우느라 힘들었던 기억이 있는데

완벽하게 리셋되었네용 ㅎ

실기는 더 정확하게 외워야할 거 같은데 이걸 어쩌

 

디자인 패턴은 소프트웨어 디자인에서 자주 발생하는 문제를 해결하기 위한 해결책의 재사용 가능한 설계입니다. GOF(Gang of Four) 디자인 패턴은 "Design Patterns: Elements of Reusable Object-Oriented Software"라는 책에서 소개된 23가지의 디자인 패턴을 의미합니다. 이들 패턴은 크게 생성(Creational), 구조(Structural), 행위(Behavioral) 세 가지 카테고리로 나뉩니다.

 

 

생성(Creational) 디자인 패턴:

  1. 싱글톤(Singleton) 패턴: 클래스의 인스턴스가 오직 하나만 생성되도록 보장하고, 그 인스턴스에 대한 전역적인 접근점을 제공합니다.
  2. 팩토리 메서드(Factory Method) 패턴: 객체 생성을 하위 클래스에 위임하여 구체 클래스를 결정하는 것을 서브 클래스에게 맡깁니다.
  3. 추상 팩토리(Abstract Factory) 패턴: 관련 객체들의 집합을 생성하는 인터페이스를 제공하고, 이를 이용하여 서로 다른 구현체를 생성합니다.
  4. 빌더(Builder) 패턴: 복잡한 객체를 생성하는 과정을 캡슐화하여 동일한 생성 과정에서 서로 다른 표현을 만들 수 있도록 합니다.
  5. 프로토타입(Prototype) 패턴: 생성할 객체의 유형을 명시하는 인스턴스로부터 객체를 복제하여 새로운 객체를 생성합니다.

 

구조(Structural) 디자인 패턴:

  1. 어댑터(Adapter) 패턴: 호환되지 않는 인터페이스를 함께 동작할 수 있도록 변환해줍니다.
  2. 브리지(Bridge) 패턴: 추상화와 구현을 분리하여 각각을 독립적으로 변경할 수 있도록 합니다.
  3. 컴퍼지트(Composite) 패턴: 개별 객체와 복합 객체를 동일한 인터페이스로 처리하여 트리 구조를 구성합니다.
  4. 데커레이터(Decorator) 패턴: 객체의 기능을 동적으로 확장할 수 있도록 합니다.
  5. 퍼사드(Facade) 패턴: 복잡한 서브 시스템에 대한 단일 인터페이스를 제공하여 사용을 단순화합니다.
  6. 플라이웨이트(Flyweight) 패턴: 객체를 공유하여 메모리 사용량을 최적화합니다.
  7. 프록시(Proxy) 패턴: 다른 객체에 대한 접근을 제어하거나 대리할 수 있는 객체를 제공합니다.

 

행위(Behavioral) 디자인 패턴:

  1. 책임 연쇄(Chain of Responsibility) 패턴: 요청을 처리할 수 있는 객체의 연결을 만들어 처리자를 찾아 전달합니다.
  2. 커맨드(Command) 패턴: 요청을 객체로 캡슐화하여 사용자가 보낸 요청을 나중에 실행하거나 취소할 수 있도록 합니다.
  3. 인터프리터(Interpreter) 패턴: 언어의 문법 규칙을 나타내는 클래스를 생성하고, 해당 언어의 표현을 해석하는 방법을 제공합니다.
  4. 반복자(Iterator) 패턴: 객체 집합을 순차적으로 접근할 수 있는 방법을 제공합니다.
  5. 중재자(Mediator) 패턴: 객체 간의 상호작용을 캡슐화하여 객체 간의 결합을 낮춥니다.
  6. 메멘토(Memento) 패턴: 객체의 상태를 저장하고 복원할 수 있는 메커니즘을 제공합니다.
  7. 옵저버(Observer) 패턴: 객체 간의 일대다 의존 관계를 정의하고, 객체의 상태 변화에 대한 통지 메커니즘을 제공합니다.
  8. 상태(State) 패턴: 객체의 내부 상태가 바뀜에 따라 객체의 행동을 변경할 수 있도록 합니다.
  9. 전략(Strategy) 패턴: 알고리즘을 캡슐화하여 동적으로 교체할 수 있도록 합니다.
  10. 템플릿 메서드(Template Method) 패턴: 알고리즘의 뼈대를 정의하고, 일부 단계를 서브 클래스로 분리하여 구현합니다.
  11. 비지터(Visitor) 패턴: 객체 구조를 변경하지 않고, 객체의 연산을 수행하는 방법을 제공합니다.

 

GOF의 디자인 패턴은 소프트웨어 개발에서 자주 발생하는 다양한 문제를 해결하기 위한 강력한 도구입니다. 이러한 패턴들을 잘 활용하면 유연하고 확장 가능한 소프트웨어를 개발할 수 있습니다.

 

디자인패턴을 통해 소프트웨어 설계의 다양한 측면에서의 문제를 해결하는데 도움을 주고,

코드의 유연성재사용성이 향상!