Head First 设计模式 --6 命令模式
2024-10-09 09:12:17
命令模式:将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
用到的原则:
1、封装变化
2、组合优于继承
3、针对接口编程,不能针对实现编程
4、解耦
5、类对修改关闭,对扩展开放
6、依赖抽象,不依赖具体
命令模式很好理解,直接看代码
interface Commend {
public void execute();
} class Light {
public void on() {
System.out.println("light on");
} public void off() {
System.out.println("light off");
}
} class LintOnCommend implements Commend {
Light light; public LintOnCommend(Light light) {
this.light = light;
} @Override
public void execute() {
light.on();
} } class SimpleRemoteControl {
Commend commend; public SimpleRemoteControl() {} public void setCommend(Commend commend) {
this.commend = commend;
} public void buttonWasPressed() {
commend.execute();
}
} public class Test {
public static void main(String[] args) {
SimpleRemoteControl control = new SimpleRemoteControl();
Light light = new Light();
LintOnCommend onCommend = new LintOnCommend(light); control.setCommend(onCommend);
control.buttonWasPressed();
}
}
类图
命令模式主要就是让类具有单一权责,每个类只干自己的事,不关心具体的类型。就像SimpleRemoteControl中,只需要给它一名命令就去执行,不管这个命令的具体类型是什么。
还有要说的是设计技巧,也就是需要好好理解一下类图。
书中第六章还有更加高大上的例子,简单的实现了遥控器的实现原理还有回到上一个命令的方法。也有将一组命令组合到一个命令的方法,然后利用这个原理可以实现队列请求,日志请求。我只是学习一下设计模式,并没有打算把整个书抄下来。
最新文章
- 16.(转) Android之Support v4、v7、v13的区别和应用场景
- Xenomai
- c#入门实例
- Windows下将txt导入MySQL及远程连接设置
- linux shell在while中用read从键盘输入
- C#调用API函数EnumWindows枚举窗口的方法
- HTML中meta的应用
- 使用 System.Transactions 进行事物管理
- ProjectManager Beta 2 项目管理器发布
- 七月SSL行业新闻回顾
- 使用milang出错:LookupError: unknown encoding: idna
- SQLServer2016 AlwaysOn AG基于工作组的搭建笔记
- excel 错误提示以及其他基础知识
- 01.如何把.py文件打包成为exe,重点讲解pyinstaller的用法
- QThreadPool线程池的使用,线程与Widget通过信号与槽的方式通信。
- [100]find&;xargs命令
- 运行inetmgr提示“找不到文件”无法打开IIS管理器的解决办法
- Spark SQL的整体实现逻辑
- 【HNOI】 小A的树 tree-dp
- caffe Python API 之激活函数ReLU
热门文章
- Nodejs开发(2.连接MongoDB)
- Android百分比布局支持库介绍——com.android.support:percent(转)
- Diablo2 1.13版&;PlugY10.00 男巫存档
- java程序中调用Linux命令Windows命令
- RDIFramework.NET ━ Web中打印的各种方案参考-欢迎补充
- 线性时间的排序算法--桶排序(以leetcode164. Maximum Gap为例讲解)
- svg学习(七)polygon
- 笔记本自带 WiFi 功能
- js中获取当前时间
- paper 95:《模式识别和机器学习》资源