/ EXITEM, 정처기

GOF(Gang of Four)

GOF (Gang of Four)

GOF 디자인 패턴은 일종의 설계 템플릿으로서, 소프트웨어 개발에서 자주 발생하는 문제들을 해결하는 방법을 정리한 것으로 소프트웨어 개발자들 사이에서 일종의 공통 언어로서 사용됩니다.
디자인 패턴의 근간을 이루는 책인 ‘Design Patterns: Elements of Reusable Object-Oriented Software’에서 제안되었습니다.

카테고리

생성 패턴(Creational Pattern)

객체 생성에 관련된 패턴으로, 객체를 생성하고 구성하는 방법을 추상화합니다.

  • Singleton, Factory Method, Abstract Factory, Builder, Prototype 등이 있습니다.
  • 예를 들어,
    • Singleton 디자인 패턴은 어떤 클래스가 오직 하나의 인스턴스만을 갖도록 보장하며, 이를 통해 프로그램 내에서 하나의 객체만 사용하도록 제한할 수 있습니다.
      • 이러한 제한을 통해 여러 개의 객체가 생성되어 발생할 수 있는 메모리 문제나 예기치 않은 동작 등을 방지할 수 있습니다.
    • Factory Method 디자인 패턴은 객체 생성을 처리하는 패턴으로, 객체 생성과 관련된 코드를 별도의 클래스로 분리하여 캡슐화합니다. 이를 통해 클라이언트 코드는 실제 생성되는 객체에 대한 정보 없이도 객체를 생성할 수 있습니다.
      • 이러한 방법을 사용하면 객체 생성과정의 변경에 유연하게 대응할 수 있으며, 객체 생성 코드의 중복을 피할 수 있습니다.

구조 패턴(Structural Pattern)

클래스나 객체들을 조합하여 더 큰 구조를 만다는 패턴으로, 클래스와 객체를 구성하는 방법을 정의합니다.

  • Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy 등이 있습니다.
  • 예를 들어,
    • Decorator 디자인 패턴은 객체의 기능을 동적으로 추가하거나 변경하는 방법을 제공합니다. 이를 통해 객체를 구성하는 데 필요한 다양한 기능들을 불필요한 상속 구조 없이도 조합할 수 있습니다.

행동 패턴(Behavioral Pattern)

객체들이 상호작용하는 방법과 책임을 분산하는 패턴으로, 객체들 간의 행동을 정의합니다.

  • Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memoento, Observer, State, Stategy, Template Method, Visitor 등이 있습니다.

각 패턴은 특정한 문제에 대한 해결책을 제공하고, 재사용성과 유지보수성을 향상시킵니다.
또한, GoF 디자인 패턴은 일종의 공통 언어를 제공하므로, 소프트웨어 개발자들 간의 의사소통을 원활하게 합니다.

주의

  • GoF 디자인 패턴을 적용할 때에는 반드시 상황에 맞게 사용해야하며, 남용할 경우 코드의 복잡성과 가독성을 높일 수 있다는 점을 인지해야 합니다.
  • 디자인 패턴을 이해하기 위해서는 객체지향 프로그래밍의 개념과 원칙에 대한 이해가 필수적입니다.
  • 패턴의 남용은 코드의 가독성을 떨어뜨릴 수 있으므로, 패턴의 적용은 상황에 맞게 사용해야 합니다.
  • 또한, 디자인 패턴을 이해하기 위해서는 객체지향 프로그래밍의 개념과 원칙에 대한 이해가 필수적입니다.