Java Design Pattern - Command Pattern

업데이트:

Design Pattern

  • 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다.
  • 디자인 패턴은 알고리즘이 아니라 상황에 따라 자주 쓰이는 설계 방법을 정리한 코딩 방법론일 뿐이며 모든 상황의 해결책이 아니다.

Behavioral Patterns, 행위 패턴

  • 객체간의 상호작용과 책임을 중시하는 패턴이다.
  • 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하면서 객체 사이의 결합도를 최소화하는 것에 중점을 두는 패턴이다.

Template Method Pattern

  • 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체를 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 작업을 바꾸는 패턴이다.

Example

public abstract class Game {

  abstract void initialize();

  abstract void startPlay();

  abstract void endPlay();

  // Template method
  public final void play() {
    // Initialze the game
    initialize();
    // Start game
    startPlay();
    // End game
    endPlay();
  }

}
public class Cricket extends Game {

  @Override
  void endPlay() {
    System.out.println("Cricket Game Finished!");
  }

  @Override
  void initialize() {
    System.out.println("Cricket Game Initialized! Start playing.");
  }

  @Override
  void startPlay() {
    System.out.println("Cricket Game Started. Enjoy the game!");
  }

}
public class Football extends Game {

  @Override
  void endPlay() {
    System.out.println("Football Game Finished!");
  }

  @Override
  void initialize() {
    System.out.println("Football Game Initialized! Start playing.");
  }

  @Override
  void startPlay() {
    System.out.println("Football Game Started. Enjoy the game!");
  }

}
  • 스포츠 게임에 대한 행위를 추상화 시킨 Game 추상 객체를 정의한다.
  • 각 게임 전, 시작, 종료를 캡슐화 하여 각 스포츠 게임에 따라 Cricket과 Football을 구현시킨다.
public class TemplatePatternMain {

  public static void main(String[] args) {
    Game game = new Cricket();
    game.play();
    game = new Football();
    game.play();
  }

}
  • Game 추상 객체를 Cricket과 Football 별로 play 시켜 주어진 게임의 단계 별 행위가 다른 것을 확인한다.

Source

Sample Code는 여기에서 확인 가능합니다.

댓글남기기