一、命令模式
将请求、命令、动作等封装成对象,这样可以让项目使用这些对象来
参数化其他对象。使得命令的请求者和执行者解耦
二、示例
家电自动化遥控器API项目:智能遥控器上有多个开关按钮,可是实现不同家电的控制,也可对新家电进行接入拓展
如果用传统面向对象的模式,则是定义一个遥控的对象,在对象内进行每个按钮的监听,分别判断进行相应的处理
1.电灯对象,控制开关
1 |
|
2.收音机对象,控制开关和音量
1 |
|
3.遥控器对象,进行判断处理
1 |
|
缺点:所有操作均在遥控对象内控制,耦合度太高,且如果新增或删减电器则会对整个控制对象进行改动,不利于维护
三、命令模式的实现
1.定义统一的命令方法接口
1 |
|
2.创建各自不同的命令对象
1 |
|
1 |
|
3.遥控器对象对各命令进行抽象处理
1 |
|
4.新增和删减电器时传入相应的实体类进行命令的初始化
1 |
|
优点:
- 命令之间相互分离,互不影响,也便于新命令的接入和删除。
- 即使新增返回按钮,和组合按钮等功能,也易于拓展且不影响其它命令。
Java设计模式所有示例代码,持续更新中