Design Pattern (디자인 패턴)

1 minute read

디자인 패턴

Adapter Pattern (어댑터 패턴)

  • 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴
  • 인터페이스가 서로 다른 객체들이 같은 형식으로 작동할 수 있게 해준다
  • OCP 활용한 설계 패턴
  • 같이 쓸 수 없는 클래스를 연결해 사용할 수 있게 해준다

Proxy Pattern (프록시 패턴)

  • 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴
  • OCP, DIP 활용한 설계 패턴
  • 프록시에서 실제 서비스와 같은 이름의 메서드를 구현 (인터페이스 사용)
  • 프록시는 실제 서비스에 대한 참조 변수를 갖는다
  • 프록시에서 실제 서비스에 존재하는 같은 이름의 메서드를 호출한 후 해당 값을 반환한다 (전후에 추가 로직 수행 가능)
  • 반환값에 대한 변경은 최대한 이루어지지 않게

Decorator Pattern (데코레이터 패턴)

  • 메서드 호출의 반환값에 변화를 주기 위해 중간에 데코레이터를 두는 패턴
  • 프록시 패턴과 구현 방식은 동일하지만, 반환값에 대한 변경이 일어난다.
  • OCP, DIP 활용한 설계 패턴

Singleton Pattern (싱글턴 패턴)

  • 클래스에 대한 인스턴스를 오직 하나만 만들어 사용하기 위한 패턴 (불필요한 자원 낭비 최소화)
  • new를 실행할 수 없도록 생성자에 private 접근 제어자를 지정한다. (객체를 생성하는 과정을 없앰)
  • 유일한 객체를 반환할 수 있는 static 메서드가 필요
  • 유일한 객체를 참조할 static 변수가 필요
  • read only 변수만 존재하게 설계해야 한다.

Template Method Pattern (템플릿 메서드 패턴)

  • 상위 클래스의 템플릿 메서드에서 하위 클래스가 오버라이딩한 메서드를 호출하는 패턴
  • DIP 활용한 설계 패턴
  • 전체적으로는 동일하면서 부분적으로 다른 메서드의 코드 중복을 최소화시킴
  • 오버라이딩을 강제하는 부분과 그렇지 않은 부분으로 나눠서 관리한다.

Factory Method Pattern (팩토리 메서드 패턴)

  • Factory : 객체를 생성해 반환하는 메서드
  • 오버라이드된 메서드가 객체를 반환하는 패턴
  • 생성자 형식 변경에 구애받지 않게 해준다

  • DIP 활용한 설계 패턴

Strategy Pattern (전략 패턴)

  • 각 행동을 모듈화해서 독립적이고 상호 교체 가능하게 만듦
  • strategy, context, client 의 세 요소로 구성
  • client에서 strategy 객체를생성해 context에 주입하는 패턴
  • 자바에서는 단일 상속만 지원하기 때문에, 템플릿 메서드 패턴보다 전략 패턴을 많이 사용한다.
  • OCP, DIP 활용한 설계 패턴

Template Callback Pattern (견본/회신 패턴)

  • DI (의존성 주입)에서 사용하는 특별한 형태의 전략 패턴
  • 전략 패턴과 동일하지만, strategy를 __anonymous inner class__로 정의해서 사용한다
  • OCP, DIP 활용한 설계 패턴

MVC Pattern (Model - View - Controller)

  • Model : 백그라운드 동작 로직 처리
  • View : 사용자가 볼 결과 화면 출력
  • Controller : Model - View 를 연결해주는 역할

State Pattern

  • 객체가 상태마다 다른 행위를 해야될 때, 상태 자체를 객체화하여 행위를 위임하는 패턴
  • 조건문으로 분류하는 것이 아닌 상태 객체를 변경해줌으로써 해야할 일을 지정할 수 있다. (조건문 대체 가능)

Facade Pattern (퍼사드 패턴)

  • 복잡한 과정을 한 곳에서 모아서 처리한 후 사용시에는 간략화된 방식으로 사용하는 디자인 패턴
  • 실제 implementation에 대한 interface를 제공한다고 생가하면 될 것 같다

Categories:

Updated: