커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며,매개변수를 써서 여러 가지 다른 요구 사항을 집어 넣을 수도 있다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업취소 기능도 지원 가능하다. 커맨드 패턴은 메소드 호출을 캡슐화하여 한 차운 높은 단계의 캡슐화를 가능하게 한다.
커맨드 패턴은 특정 행위를 받는 행위와 연결함으로써 요구 사항을 캡슐화시키는 것이다. 즉, 내부적인 실행과정은 한 객체에 집어넣고 실행 메소드만 외부로 공개하는 방법이다.
우선, 커맨드 인터페이스를 구현한다.
public interface Command {
public void execute(); /* 실행 메소드를 구현하게 선언함 */
}
실행할 내용을 가지고 있는 A클래스를 구현한다.
public class A {
/* on 작동하는 메소드 구현 */
public void on() {
System.out.println("A클래스를 on시킵니다");
}
public void off(){ /* off 작동하는 메소드 구현 */
System.out.println("A클래스를 off시킵니다.");
}
}
실행 클래스를 조정하는 클래스를 구현한다.
public class Control {
Command slot; /* 커맨드 클래스 인스턴스를 가짐 */
public Control(){}
public void setCommand(Command command){ /* set커맨드 메소드 */
slot = command;
}
public void action(){ /* execute()메소드를 실핼 시크는 메소드*/
slot.execute();
}
}
A클래스를 실행하는 클래스를 구현한다. 이 때 커맨드 인터페이스를 구현한다.
public class AonCommand implements Command {
A a;
public AonCommand(A a) {
this.a = a;
}
public void execute() {
a.on();
}
}
실제 시뮬레이터 클래스 구현
public class Simulator {
public static void main(String[] args) {
Control remote = new Control();
A a = new A();
AonCommand aon = new AonCommand(a);
remote.setCommand(aon);
remote.action();
}
}
이런 방식으로 커맨트 패턴은 구현된다.
'프로그램 아키텍쳐 > 디자인패턴' 카테고리의 다른 글
디자인 패턴(Design Patterns)이란 (0) | 2009.08.27 |
---|---|
어댑터패턴 ( adapter pattern ) (0) | 2009.01.07 |
싱글턴 패턴 ( Singleton Pattern ) (0) | 2009.01.05 |
팩토리 패턴 ( Factory pattern ) (0) | 2009.01.05 |
데코레이터 패턴 ( Decorator Pattern ) (0) | 2009.01.04 |