/*
*命令模式(Command),将一个请求封装为一个对象,
*从而使你可用不同的请求对客户进行参数化,
*对请求队列或记录请求日志,
*以及支持可以撤销的操作。
*/
package Command;
//Command类 命令类 用来声明执行操作的接口
abstract class Command{
protected Receiver receiver;
public Command(Receiver receiver){
this.receiver=receiver;
}
abstract public void execute_1();
abstract public void execute_2();
}
//将一个接受者对象绑定于一个动作,调用接受者相应的操作,实现execut。
class ConcreteCommand extends Command{
public ConcreteCommand(Receiver receiver) {
super(receiver);
// TODO Auto-generated constructor stub
}
@Override
public void execute_1() {
// TODO Auto-generated method stub
receiver.action_1();
}
@Override
public void execute_2() {
// TODO Auto-generated method stub
receiver.action_2();
}
}
//要求该命令执行这个请求
class Invoker{
private Command command;
public void SetCommand (Command command){
this.command=command;
}
public void excutecommand_1(){
command.execute_1();
}
public void excutecommand_2(){
command.execute_2();
}
}
//Receiver类 知道如何实施与执行一个与请求相关的操作,任何类都可能作为一个接收者
class Receiver{
public void action_1(){
System.out.println("action_1");
}
public void action_2(){
System.out.println("action_2");
}
}
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Receiver r=new Receiver();
Command c=new ConcreteCommand(r);
Invoker i=new Invoker();
i.SetCommand(c);
i.excutecommand_1();
i.excutecommand_2();
System.out.println("");
}
}
/*
* 命令模式优点:
* 1.比较容易的设计一个命令队列
* 2.在需要的情况下,可以比较容易的将命令记入日志
* 3.允许接收请求的一方决定是否否决请求
* 4.可以容易的实现对请求的撤销和重做
* 5.增加新的具体命令类很容易
* 6.关键优点:::命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分割开来
*
*
*/
命令模式的代码实现及优点
最新推荐文章于 2021-08-16 19:49:00 发布