动机:行为请求者(接口)和行为实现者(实现方法)呈现紧耦合,对于行为进行“记录、撤销、事务”时,紧耦合就显得不合适了
class Command{
protected void execute();
}
class ConcreteCommand1 extends Command{
@Override
protected void execute(){
return "1";
}
}
class ConcreteCommand2 extends Command{
@Override
protected void execute(){
return "2";
}
}
class CommandStack extends Command{
Stack s;
@Override
protected void execute(){
if(s.hasValue()){
return "4";
}
return "3";
}
}
倘若Command不被定义为对象,那么命令执行过程中,对于程序员在高级语言下则无法对命令执行监听,撤销
JAVA中方法执行是,注解事务监听@Before则是一个例子,被注解标注的方法及是一个对象