디자인 패턴 스터디

안성은·2022년 4월 4일
0

Disign Pattern

목록 보기
1/9

디자인 패턴 23가지 및 요약

A. 생성 패턴(Creational Patterns)

객체를 생성하는데 관련된 패턴들, 객체가 생성되는 과정의 유연성을 높이고 코드의 유지를 쉽게 함

  1. Abstract Factory
    • 추상 인터페이스를 이용해서 실제 인스턴스가 만들어지는 방법, 인터페이스에 존재하는 행위만 이용해 결과값을 받도록하는 패턴이다.
  2. Builder
    • 객체를 여러 단계로 만들수 있도록 캡슐화하고 싶을 때 사용하는 패턴으로 객체 생성에 유연함을 제공한다.
  3. Factory Method
    • 객체를 생성하기 위한 인터페이스를 정의하고 어떤 클래스의 인스턴스를 만들는 것을 서브 클래스에서 하도록 하는 패턴이다.
  4. Prototype
    • 어떤 클래스의 인스턴스를 만드는 것이 자원/시간을 많이 잡아먹는 경우 인스턴스를 복사해서 인스턴스를 새로 생성하는 패턴이다.
  5. Singleton
    • 해당 클래스의 인스턴스가 하나만 만들어지고 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴이며 상태를 가져서는 안된다.

B. 구조 패턴(Structural Patterns)

프로그램 구조에 관련된 패턴들, 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램의 구조를 설계하는데 활용할 수 있는 패턴들

  1. Adapter
    • 어떤 클래스의 인터페이스를 변환해서 사용할 수 있는 인터페이스로 변환하고 인터페이스 호환성 문제가 있을 때 주로 사용하는 패턴이다.
  2. Bridge
    • 구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴으로 추상층과 구현부가 연결된 관계를 브릿지라고 한다.
  3. Composite
    • 객체들을 트리 구조로 만들어서 부분과 전체를 나타내는 계층 구조로 사용하는 패턴이다.
  4. Decorator
    • 객체의 추가적인 요소를 동적으로 삽입할 때 사용한다. 서브 클래스를 만들어서 새로운 기능에 유연하게 확장할 수 있다.
  5. Facade
    • 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공하는 방법이며, 퍼사드에서 인터페이스를 잘 정의할 수록 서브시스템 사용이 간편하다.
  6. Flyweight
    • 유사한 객체들 간의 데이터를 공유하는 방법으로 사용되는 메모리를 최소화 하기 위해 사용하는 패턴
  7. Proxy
    • 어떤 객체에 대한 접근을 제어하기 위한 용도 중계 역할을 하는 객체를 사용하는 패턴

C. 행동 패턴(Behavioral Patterns)

반복적으로 사용되는 객체들의 상호작용을 패턴화 해놓은 것들

  1. Chain of Responsibility
    • 어떤 요청을 사슬 처럼 단계적으로 해결할 때까지 처리하는 패턴
  2. Command
    • 커맨드 패턴은 요구 사항을 객체로 캡슐화 할 수 있으며, 매개변수를 통해 여러 가지 다른 요구 사항을 집어넣을수도 있으며, 요청 내역을 큐에 저장하거나 UNDO를 기능을 사용할 때 사용하는 패턴이다.
  3. Interpreter
    • 어떤 문법이나 규칙을 클래스화 시켜서 관리가 편하고 반복되는 문제 패턴을 언어, 문법으로 정의한다. 대표적인 예시로 정규표현식이 있다.
  4. Iterator
    • 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해주는 패턴, 반복을 캡슐화하는 방법
  5. Mediator
    • 서로 관련된 객체 사이의 복잡한 통신과 제어를 한 곳으로 집중시키고자 하는 경우 사용하는 패턴으로 N:M의 관계를 N:1로 변경할 수 있어서 관리에 용이한 패턴이다.
  6. Memento
    • 메멘토 객체를 사용해서 상태를 저장하고 이전 상태로 복구시켜야 하는 경우 사용하는 패턴
  7. Observer
    • 한 객체의 상태가 변경되면 그 객체의 의존하는 다른 객체들한테 연 락이 가고 자동으로 내용이 갱신되는 방식으로 1:N 의존성을 가진다.
  8. State
    • 객체의 내부 상태가 바뀌는 것에 따라서 객체의 행위를 변경시키는패턴
  9. Strategy
    • 어떤 행위의 각 단계를 구현하는 방법을 서브 클래스에서 구현하는 방법으로 다양한 행위를 서브 클래스에서 구현하기 때문에 쉽게 전략을 바꿀 수 있는 패턴
  10. Template Method
    • 메소드에서 알고리즘의 골격을 정하고 일부는 서브클래스에서 구현할 수 있도록 제공하는 템플릿같은 패턴
  11. Visitor
    • 객체의 구조에서 로직을 분리시켜서 로직이 새롭게 추가되거나 삭제되어도 구조에 영향을 미치지않는 패턴이지만 객체의 구조가 추가될 경우 관련된 로직은 수정해야한다는 유지보수의 어려움 존재

0개의 댓글