디자인패턴

Featured image

디자인 패턴은 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책입니다.

디자인 패턴은 크게 3가지로 나눌 수 있습니다. 1. 생성 패턴, 2. 구조 패턴, 3. 행동 패턴입니다.

생성 패턴은 객체 인스턴스 생성을 위한 패턴으로, 클라이언트와 그 클라이언트에서 생성해야 할 객체 인스턴스 사이의 연결을 끊어주는 패턴입니다.

구조 패턴은 클래스 및 객체들의 구성을 통해서 더 큰 구조로 만들 수 있게 해주는 것과 관련된 패턴입니다.

행동 패턴은 클래스와 객체들이 상호작용하는 방법 및 역할을 분담하는 방법과 관련된 패턴입니다.

 

  1. 생성 패턴
    • Singleton pattern(싱글톤 패턴)
      • 딱 한 객체만 생성되도록 합니다.
    • Abstract Factory(추상 팩토리 패턴)
      • 클라이언트에서 구상 클래스를 지정하지 않으면서도 일군의 객체를 생성할 수 있도록 합니다.
    • Builder pattern(빌더 패턴)
      • 제품을 여러 단계로 나눠서 만들 수 있도록 제품 생산 단계들을 캡슐화할 때 사용합니다.
      • 추후 작성
    • Factory Method pattern(팩토리 메서드 패턴)
      • 생성할 구상 클래스를 서브클래스에서 결정합니다.
      • 추후 작성
    • Prototype pattern(프로토타입 패턴)
      • 어떤 클래스의 인스턴스를 만드는 것이 자원/시간을 많이 잡아먹거나 복잡한 경우 사용합니다.
      • 추후 작성
  2. 구조 패턴
    • Adapter pattern(어댑터 패턴)
      • 객체를 감싸서 다른 인터페이스를 제공합니다.
      • 추후 작성
    • Bridge pattern(브릿지 패턴)
      • 구현 뿐만 아니라 추상화된 부분까지 변경시켜야 하는 경우 사용합니다.
      • 추후 작성
    • Composite pattern(컴포지트 패턴)
      • 클라이언트에서 객체 컬렉션과 객발 객체를 똑같이 다룰 수 있도록 합니다.
      • 추후 작성
    • Decorator pattern(데코레이터 패턴)
      • 객체를 감싸서 새로운 행동을 제공합니다.
      • 추후 작성
    • Facade pattern(퍼사드 패턴)
      • 일련의 클래스에 대해서 간단한 인터페이스를 제공합니다.
      • 추후 작성
    • Flyweight pattern(플라이웨이트 패턴)
      •  어떤 클래스의 인스턴스 한 개만 가지고 여러 개의 "가상 인스턴스"를 제공하고 싶을 때 사용합니다.
      • 추후 작성
    • Proxy pattern(프록시 패턴)
      • 객체를 감싸서 그 객체에 대한 접근을 제어합니다.
      • 추후 작성
  3. 행동 패턴
    • Chain of Responsibility pattern(역할 사슬 패턴)
      • 한 요청을 두 개 이상의 객체에서 처리하고 싶을 때 사용합니다.
      • 추후 작성
    • Command pattern(커맨드 패턴)
      • 요청을 객체로 감쌉니다.
      • 추후 작성
    • Interpreter pattern(인터프리터 패턴)
      • 어떤 언어에 대한 인터프리터를 만들 때 사용합니다.
      • 추후 작성
    • Iterator pattern(이터레이터 패턴)
      • 컬렉션이 어떤 식으로 구현되었는지 드러내진 않으면서도 컬렉션 내에 있는 모든 객체에 대해 반복 작업을 처리할 수 있게 합니다.
      • 추후 작성
    • Mediator pattern(미디에이터 패턴)
      • 서로 관련된 객체 사이의 복잡한 통신과 제어를 한 곳으로 집중시키고자 할 때 사용합니다.
      • 추후 작성
    • Memento pattern(메멘토 패턴)
      • 객체를 이전의 상태로 복구시켜야 하는 경우 사용합니다.
      • 추후 작성
    • Observer pattern(옵저버 패턴)
      • 상태가 변경되면 다른 객체들한테 연락을 돌릴 수 있게 합니다.
      • 추후 작성
    • State pattern(상태 패턴)
      • 알고리즘의 개별 단계를 구현하는 방법을 서브클래스에서 결정합니다.
      • 추후 작성
    • Strategy pattern(스트래티지 패턴)
      • 교환 가능한 행동을 캡슐화하고 위임을 통해서 어떤 행동을 사용할지 결정합니다.
      • 추후 작성
    • Template Method pattern(템플릿 메서드 패턴)
      • 알고리즘의 개별 단계를 구현하는 방법을 서브클래스에서 결정합니다.
      • 추후 작성
    • Visitor pattern(비지터 패턴)
      • 다양한 객체에 새로운 기능을 추가해야 하는데 캡슐화가 별로 중요하지 않은 경우 사용합니다.
      • 추후 작성