命令模式(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,遥控 ...
随机推荐
- centos下chm阅读器
xchm kchmviewer chmsee
- Java并发编程--Fork/Join框架使用
上篇博客我们介绍了通过CyclicBarrier使线程同步,可是上述方法存在一个问题,那就是假设一个大任务跑了2个线程去完毕.假设线程2耗时比线程1多2倍.线程1完毕后必须等待线程2完毕.等待的过程线 ...
- ZOJ 3542 2011大连现场赛D题(简单模拟)
Hexadecimal View Time Limit: 2 Seconds Memory Limit: 65536 KB Hexadecimal is very important an ...
- GMM的EM算法
在聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut一文中我们给出了GMM算法的基本模型与似然函数,在EM算法原理中对EM算法的实现与收敛性证明 ...
- 巧妙使用Firebug插件,快速监控网站打开缓慢的原因
原文 巧妙使用Firebug插件,快速监控网站打开缓慢的原因 很多用户会问,我的网站首页才50KB,打开网页用了近60秒才打开?如何解释? 用户抱怨服务器运行缓慢,w3wp.exe 出现 CPU 10 ...
- 开源图计算框架GraphLab介绍
GraphLab介绍 GraphLab 是由CMU(卡内基梅隆大学)的Select 实验室在2010 年提出的一个基于图像处理模型的开源图计算框架.框架使用C++语言开发实现. 该框架是面向机器学习( ...
- Spring集成XFire开发WebService
Spring是眼下最流行的JavaEE Framework,可是使用Spring的Spring-WS开发WebService却十分繁琐.XFire是一个简化WebService开发的开源项目.通过Sp ...
- Python的Tkinter将窗口置顶
root = Tk()root.wm_attributes('-topmost',1)
- 使用Nexus搭建企业maven仓库(二)
先阅读<使用Nexus搭建企业maven仓库(一)> http://blog.csdn.net/ouyida3/article/details/40747545 1.官网眼下最新的版本号是 ...
- [置顶] 生成学习算法、高斯判别分析、朴素贝叶斯、Laplace平滑——斯坦福ML公开课笔记5
转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9285001 该系列笔记1-5pdf下载请猛击这里. 本篇博客为斯坦福ML公开 ...