어댑터 패턴(Adapter Pattern)

  • 용도
    • 어떤 클래스를 우리가 바로 사용할 수 없을 때가 있다. 다른 곳에서 개발한 클래스고, 우리가 그것을 수정할 수 없을 때, 우리에게 맞게 중간에 변환할 역할을 해줄 수 있는 클래스가 필요한데, 그것이 바로 어댑터이다.
  • 사용 방법
    • 상속
    • 위임: 어떤 메소드의 실제 처리를 다른 인스턴스의 메소드에게 맡기는 방법
  • Class Diagram

커맨드 패턴(Proxy Pattern)

  • 용도
    • 실행하고 싶은 메소드의 History 관리(우리가 Ctrl + z를 눌러서 실행취소를 한다고 할 때, History를 저장할 수 있어야 가능함)
    • 매크로 명령을 정의하고자 할 때
    • 동일한 명령을 반복해서 실행할 때
  • 사용 방법
    • 명령어를 객체에 캡슐화해 저장함(주로 스택으로 저장)
  • Class Diagram

옵저버 패턴(Observer Pattern)

  • 용도
    • 관찰 대상의 상태가 변화했을 때 관찰자에게 통지하는 패턴
    • 상태 변화에 따른 처리를 기술할 때 효과적으로 활용(MVC패턴에서 Model과 View의 분리 등)
  • 사용 방법
    • Observer 클래스에 상태 변화를 알려주고, Observer는 다시 그 변화에 맞는 결과를 나타냄
  • Class Diagram

프록시 패턴(Proxy Pattern)

  • 용도
    • Proxy는 대리인이라는 의미, 시간이 많이 걸리는 작업을 할 때 사용함
    • 시간이 많이 걸리는 작업을 할 때, 대리인이 할 수 있는 일은 대리인이 하고 할 수 없는 일(Heavy job)은 본래의 클래스에게 넘겨줌
      • 시스템 초기화는 필요하지 않은 기능까지 초기화하려고 하면 많은 시간이 필요한데, 그 기능을 Proxy에 위임함
      • 프린트 프로그램에서 실제 프린터를 실행하는 과정에 시간이 오래 걸리기 때문에 그 과정에 있는 일들을 Proxy에 위임함
  • 사용 방법
    • Proxy클래스에 우선 일을 위임하고, 그 뒤에 RealSubject가 해야할 일은 넘겨주는 방법으로 사용
  • Class Diagram

퍼사드 패턴(Facade Pattern)

  • 용도
    • 대규모 프로그램에는 서로 관련있는 클래스들이 많음 -> 복잡하게 얽혀있는 클래스들을 정리해서 높은 레벨의 인터페이스(API)를 제공(간단하게 접근가능)
    • 여러 클래스들을 직접 제어하지 않고 ‘창구(facade)’에 요구함
    • 결과적으로 구현시에 간단한 인터페이스를 사용할 수 있게
  • 사용 방법
    • 여러 클래스들의 기능들을 묶은 Facade 클래스를 만들고 Facade 클래스에 접근함
  • Class Diagram

     

+ Recent posts