Command Pattern
From YYpBD's MediaWiki
목차 |
[편집]
개요
[편집]
Client
ConcreteCommmand를 생성하고 Receiver를 설정한다.
[편집]
Receiver
요구 사항을 수행하기 위해 어떤 일을 처리해야 하는지 알고 있는 객체이다.
action 메소드를 지원해야 한다.
[편집]
ConcreteCommand
Receiver의 action을 실행한다.
execute와 undo 메소드를 지원해야 한다.
[편집]
Invoker
명령이 들어 있으며 execute메소드를 호출해서 커맨드 객체에게 특정 작업을 수행하라고 요구한다.
[편집]
예제
[편집]
Delphi
[편집]
Java
public class TReceiver {
public void DoGreatWork() {}
public void DoCancelWork() {}
}
public interface TCommand {
public void execute();
public void undo();
}
public class TConcreteCommand implements TCommand {
private TReceiver FReceiver;
public TConcreteCommand( TReceiver AReceiver ) {
this.FReceiver = AReceiver;
}
public void execute() {
FReceiver.DoGreatWork();
}
public void undo() {
FReceiver.DoCancelWork();
}
}
public class TInvoker {
TCommand FCommand;
TCommand FUndoCommand;
public TInvoker() {
FUndoCommand = null;
}
public void setCommand( TCommand ACommand ) {
FCommand = ACommand;
}
public void DoWork() {
FCommand.execute();
FUndoCommand = FCommand;
}
public void CancelWork() {
if( FUndoCommand != null ) {
FUndoCommand.undo();
}
}
}
TInvoker Invoker = new TInvoker();
TReceiver Receiver = new TReceiver;
TConcreteCommand ConcreteCommand = new TConcreteCommand(Receiver);
Invoker.setCommand( ConcreteCommand );
Invoker.DoWork();
Invoker.CancelWork();
