命令模式
来源:互联网 发布:讯龙数据恢复验证码 编辑:程序博客网 时间:2024/06/06 19:14
客户端,将不同的参数传入 对象,根据不同的请求处理,对客户参数化。
行为请求者 和 行为实现者,解耦。可以适应变化。
如果有新的遥控器,只要继承命令接口,添加遥控器相应的功能,就可以了。。
如果换了一个新的电视,如果用的是同款遥控器 (电视也支持这个功能),也是可以实现相应功能
我们对电视机有不同的操作。
抽象一个请求操作:
public interface Command{ void execute();}接受请求的对象:
public class WatchTV{ public int currentChannel = 0; public void turnOn(){ System.out.println("打开电视"); } public void turnOff(){ System.out.println("关闭电视"); } public void change(int channel){ this.currentChanel = channel; System.out.println("正在收看"+this.currentChanel +"频道"); }}发出请求对象(打开电视):
public class CommandOn implements Command{ private WatchTV tv; public CommandOn(WatchTv tv){ this.tv = tv; } public void execute(){ tv.turnOn(); }}发出请求对象(关闭电视):
public class CommandOff implements Command{ private WatchTV tv; public CommandOn(WatchTv tv){ this.tv = tv; } public void execute(){ tv.turnOff(); }}操作对象(遥控器):
public class Control{ private Command commandOn; private Command commandOff; private Command commandChange; public Control(CommandOn on ,.....){ this.commandOn = on; this.commandOff = off; this.commandChange = change; } public void trunOn(){ commandOn.execute(); } public void trunOff(){ commandOff.execute(); } public void change(){ commandChange.execute(); }}
客户使用遥控器的时候:
main(){ WatchTV myTv = new WatchTV(); Command on = new CommandOn(myTv); Command off = new CommandOff(myTv); Control control = new Control(on,off,change); control.turnOn(); control.turnOff(); control.change();}
你会发现 通过 不同类之间的耦合调用,使得,用户不需要去直接命令电视,而是通过遥控器去,发送命令,然后电视才去执行。中间分好多层。
请求一方。和 操作一方独立开。
关键,在于引入 命令 抽象接口。只有实现这个接口,才能和接受者关联。。。如果电视不接受 某个遥控器的命令 也是无法操作的。
0 0
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 第七届蓝桥杯_方格填数_简单搜索
- error LNK1104: 无法打开文件“***.lib“
- 476. Number Complement
- 使用SDAutoLayout实现控件根据内容进行宽度自适应和高度自适应
- ThinkPHP中的大写方法
- 命令模式
- 分类算法:Logistic回归
- C# NX二次开发_一键开关所有图层
- 蓝桥杯JAVA语言B组_大衍数列
- JZOJ 5050. 【GDOI2017模拟一试4.11】颜色树
- Latex 安装步骤说明
- 程序员必须知道的十大基础实用算法及其讲解
- A股-进阶-炒股该如何择时(一)
- Bitmap