命令者模式
来源:互联网 发布:音频数据压缩算法 编辑:程序博客网 时间:2024/06/07 21:47
命令模式:将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化
抽象实例
Receiver.java
/** * 命令的接受者 * @author Carl_Hugo */public class Receiver { public void action(){ System.out.println("执行请求"); }}
Command.java
/** * 声明执行操作的接口 * @author Carl_Hugo * */public abstract class Command { protected Receiver receiver; public Command(Receiver receiver){ this.receiver=receiver; } public abstract void execute();}/** * 将接收者对象绑定于一个动作,调用接受者相应的动作,以实现execute() * @author Carl_Hugo */class ConcreteCommand extends Command{ public ConcreteCommand(Receiver receiver) { super(receiver); } @Override public void execute() { receiver.action(); }}
Invoker.java
/** * 要求该命令执行该请求 * @author Carl_Hugo */public class Invoker { private Command command; public void setCommand(Command command){ this.command=command; } public void executeCommand(){ command.execute(); }}
Test.java
public class Test { public static void main(String[] args) { //创建命令的接收者 Receiver receiver = new Receiver(); //创建具体的执行命令 ConcreteCommand concreteCommand = new ConcreteCommand(receiver); //创建命令传递者 Invoker invoker = new Invoker(); //将执行命令设置给命令传递者 invoker.setCommand(concreteCommand); //执行命令 invoker.executeCommand(); }}
具体实例
Barbecue.java
/** * 命令的执行者 * @author Carl_Hugo */public class Barbecuer { //烤羊肉 public void bakeMutton(){ System.out.println("烤羊肉串!"); } //烤鸡翅 public void bakeChickenWing(){ System.out.println("烤鸡翅!"); }}
Command.java
/** * 执行命令的类 * @author Carl_Hugo */public abstract class Command { protected Barbecuer receiver; //抽象命令类,确定烤肉串者是谁 public Command(Barbecuer receiver){ this.receiver=receiver; } //执行命令 public abstract void executeCommand(); }class BakeMuttonCommand extends Command{ public BakeMuttonCommand(Barbecuer receiver) { super(receiver); } @Override public void executeCommand() { receiver.bakeMutton(); }}class BakeChildrenWingCommand extends Command{ public BakeChildrenWingCommand(Barbecuer receiver) { super(receiver); } @Override public void executeCommand() { receiver.bakeChickenWing(); }}
Waiter.java
/** * 呼叫执行命令者的类 * @author Carl_Hugo */public class Waiter { private Command command; //设置订单 public void setOrder(Command command){ this.command=command; } //通知执行 public void notifyBarbecuer(){ command.executeCommand(); }}
Test.java
package zx.command.test2;public class Test { public static void main(String[] args) { Barbecuer barbecuer = new Barbecuer(); Command bakeMuttonCommand1 = new BakeMuttonCommand(barbecuer); Command bakeMuttonCommand2 = new BakeMuttonCommand(barbecuer); Command bakeChildrenWingCommand = new BakeChildrenWingCommand(barbecuer); Waiter waiter = new Waiter(); waiter.setOrder(bakeMuttonCommand1); waiter.notifyBarbecuer(); waiter.setOrder(bakeMuttonCommand2); waiter.notifyBarbecuer(); waiter.setOrder(bakeChildrenWingCommand); waiter.notifyBarbecuer(); }}
0 0
- 命令者(Command)模式
- 命令者模式
- 命令者模式
- 命令者模式
- 命令者模式
- java设计模式之命令者模式
- junit设计模式--命令者模式
- 设计模式23篇:命令者模式
- Unity3D 设计模式---命令者模式
- 设计模式 状态模式 策略模式 观察者模式 命令模式 中介者模式
- java 设计模式之装饰者模式 和命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- Eclipse智能提示及快捷键
- CSS属性之边框和轮廓属性
- 0223B
- 二分查找
- 蓝桥杯 ALGO-1区间k大数查询
- 命令者模式
- linux gcc g++编译命令选项
- C# 实现简易QQ界面
- opencv学习_7 (颜色空间)
- poj 1088 滑雪 记忆化搜索
- Android 6.0权限申请详解及权限资料整理
- 162. Find Peak Element
- csdn自带Markdown教程
- MySQL的主从、主主、被动主主搭建