命令模式(CommandPattern)
今天主要学习命令模式,java获得创意。其他屏幕教程。这里总结一下命令模式更重要。
刚开始以为命令模式是非常罕见的外观,但研究发现,他与同样单身完成。有设计模式最简单的集中模式。
象,然后其它的类直接调用该对象实现的接口的方法,达到调用对象的动作的目的。达到解耦合。
用小样例来解释:遥控器,电灯。遥控器要控制电灯的开关。可是遥控器中不应该有关于电灯的详细实现代码。这时就应该把电灯的开和关命令封装起来。
Light类:
package Dianqi;
public class Light {
private String s;
public Light(String s) {
this.s = s;
}
public void on() {
System.out.println(s + "开灯");
}
public void off() {
System.out.println(s + "关灯");
}
}
命令接口:
public interface Command {
public void execute();
}
封装会的开和关的操作:
package Commands; import Dianqi.Light;
import base.Command; public class LightOnCommond implements Command { public Light light = new Light("room"); @Override
public void execute() {
light.on(); } }
package Commands; import Dianqi.Light;
import base.Command; public class LightOffCommond implements Command { public Light light = new Light("room"); @Override
public void execute() {
light.off(); } }
遥控器相应的控制类:
package base;
public class RemoteControler {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void pressButton() {
command.execute();
}
}
最后的測试类:
import Commands.LightOffCommond;
import Commands.LightOnCommond;
import Dianqi.Light; public class TestCase { public static void main (String args[]) {
LightOnCommond commandOn = new LightOnCommond();
LightOffCommond commandOff = new LightOffCommond(); RemoteControler controler = new RemoteControler(); controler.setCommand(commandOn);
controler.pressButton(); controler.setCommand(commandOff);
controler.pressButton();
} }
总结:我觉得,这样的模式最好的地方就是通过解开了命令和运行命令的类之间的耦合性,运行者不须要知道命令内容详细是什么,仅仅要管运行execute()即可。由于这样,也添加了高扩展性。这点让我感觉和策略模式有点像。能够參考下当时我总结的策略模式哈。
然后然后,这仅仅是这样一个模型,以了解最重要的。细节还没有练手项目,有个很大的改进余地。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
命令模式(CommandPattern)的更多相关文章
- Head First 设计模式之命令模式(CommandPattern)
前言: 本章会将封装带入到一个全新的境界,把方法调用封装起来.通过封装方法调用,把运算块包装成形.调用此运算的对象不需要知道事情是如何进行的,只要知道如何使用包装形成的方法来完成它就ok了. 1 现实 ...
- CommandPattern(命令模式)-----Java/.Net
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式.请求以命令的形式包裹在对象中,并传给调用对象.调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该 ...
- C#设计模式系列:命令模式(Command)
1.命令模式简介 1.1>.定义 命令模式的目的是解除命令发出者和接收者之间的紧密耦合关系,使二者相对独立,有利于程序的并行开发和代码的维护.命令模式的核心思想是将请求封装为一个对象,将其作为命 ...
- 十一个行为模式之命令模式(Command Pattern)
定义: 将一个请求封装成对象,使得请求发送者和请求接受者之间相互隔离,消除两者之间的耦合.引入命令类,使得不同请求对客户参数化,并且可以对命令添加附件操作,如:排队.撤销.日志.组合等. 结构图: C ...
- JAVA 设计模式 命令模式
用途 命令模式 (Command) 将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化:对请求排队或请求日志,以及支持可撤销的操作. 命令模式是一种行为型模式. 结构
- 深入浅出设计模式——命令模式(Command Pattern)
模式动机 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请 ...
- CSharp设计模式读书笔记(15):命令模式(学习难度:★★★☆☆,使用频率:★★★★☆)
命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及支持可撤销的操作.命令模式是一种对象行为型模式,其别名为 ...
- Head First设计模式之命令模式
一.定义 定义:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化.对请求排队或记录请求日志,以及支持可撤消的操作. 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关 ...
- JAVA设计模式---命令模式
1.定义: 将“请求”封装成对象,以便使用不同的请求.队列或者日志来参数化其他对象,命令模式也支持可撤销的操作.命令可以用来实现日志和事务系统. 2.实例: 1)需求:设计一个家电遥控器的API,遥控 ...
随机推荐
- svn自动备份
#!/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH DATE=` ...
- 拆分字符串,GetHtmlByWebBrowser,UnicodeToMBCS,提升进程权限
1. // 根据字符串,拆分字符串,相当于vb中的split函数 function SplitString(const Source, ch: string): TStringList; var te ...
- [Android学习笔记]Android调试
Eclipse Debug 快捷键: [Ctrl + Shift + B]: 添加/取消断点 [F5]:进入方法中 [F6]:单步执行 [F7]:执行完毕此方法 [F8]:继续执行,直接跳到下一个断点 ...
- IOS学习之路二十(程序json转换数据的中文字符问题解决)
ios请求web中的json数据的时候经常出现乱码问题: 例如请求结果可能如下:"\U00e5\U00a5\U00bd\U00e8\U00ae\U00a4" 在网上查到的解决方法是 ...
- HashTable的数组和连接两种实现方法(Java版本号)
1.散列表的接口类 package cn.usst.hashtable; /** * 散列表的接口类 * @author G-Xia * */ public interface HashTable { ...
- 表达式树动态拼接lambda
动态拼接lambda表达式树 前言 最近在优化同事写的代码(我们的框架用的是dapperLambda),其中有一个这样很普通的场景——界面上提供了一些查询条件框供用户来进行过滤数据.由于dappe ...
- 搭建php环境时解决jpeg6 make: ./libtool:命令未找到
搭建php环境时解决jpeg6 make: ./libtool:命令未找到 [root@bogon jpeg-6b]# make; make install ./libtool --mode=comp ...
- Effective C++ -- 构造析构赋值运算
05.了解C++默默编写并调用哪些函数 编译产生的析构函数时non-virtual,除非这个类的基类析构函数为virtual 成员变量中有引用和const成员时,无法自己主动生成copy assign ...
- Android 开源框架Universal-Image-Loader全然解析(二)--- 图片缓存策略具体解释
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...
- Android之场景桌面(一)
声明:转载请务必注明出处,本文代码和主题仅供学习交流,请勿用于商业用途. 引言:最近Android场景桌面开始流行起来了,跟原始的Android桌面相比,场景桌面能逼真的模拟各种自然物体,并且通过点击 ...