命令模式:
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
UML图:
解析UML图:
示例:
现在需要开发一个遥控器的API,当遥控器的某个按钮按下去之后,插座上对应的机器能够操作.如灯亮,风扇转等,但注意了插座对应的设备是可变化的,或者说仍有空余的插座是预留给新设备的.
采用Command模式代码如下:
package com.lwf.command;
public interface Command {
public void excute();
}
package com.lwf.command;
public class LineOnCommand implements Command {
Light light;
public LineOnCommand(Light light){
this.light = light;
}
public void excute() {
light.on();
}
}
package com.lwf.command;
public class LineOffCommand implements Command {
Light light;
LineOffCommand(Light light){
this.light = light;
}
public void excute() {
light.off();
}
}
package com.lwf.command;
public class Light {
public void on(){
System.out.println("on");
}
public void off() {
System.out.println("off");
}
}
package com.lwf.command;
public class SimpleRemoteControl {
Command command;
public void setCommand(Command command){
this.command = command;
}
public void buttonWasPressed(){
command.excute();
}
}
package com.lwf.command;
public class Client {
/*
* 客户端负责创建command对象并设置接收者light
*/
public static void main(String[] args) {
//客户client创建command对象并设置接收者light
Light light = new Light();
Command command = new LineOnCommand(light);
//调用者(遥控器)invoker,持有command对象,并设置具体的Command对象.在自己的方法中调用command的excute方法.
SimpleRemoteControl s = new SimpleRemoteControl();
s.setCommand(command);
s.buttonWasPressed();
command = new LineOffCommand(light);
s.setCommand(command);
s.buttonWasPressed();
}
}
测试结果:
on
off
分享到:
相关推荐
今天我们将深入探讨“抽象工厂模式”(Abstract Factory Pattern),它在“深入浅出设计模式四——多区域比萨加盟店生产比萨实现”中得到了应用。这个模式主要用于创建一系列相关的对象,而无需指定其具体的类。 ...
正如本书章标题所示,“深入浅出设计模式”,正是希望通过剖析设计模式背后的原理和实践,帮助读者不仅学会使用模式,更能理解和吸收模式背后的思维逻辑,从而在自己的设计和应用中灵活运用,最终达到“把模式装进...
### 深入浅出MFC——侯捷 #### 关键知识点概述 1. **MFC框架介绍**:Microsoft Foundation Classes (MFC),是微软提供的一套基于C++的类库,用于简化Windows应用程序开发过程中的复杂度。MFC封装了许多Windows API...
设计模式是软件工程中的一种最佳实践,用于解决常见的设计问题并提供可重用的解决方案。在众多设计模式中,策略模式是一种行为模式,它允许在运行时动态选择算法或策略,从而使程序更具灵活性。本篇文章将深入探讨...
【深入浅出话VC++(2)——MFC的本质】 MFC,全称为Microsoft Foundation Class Library,是由微软公司为简化Windows平台下的C++应用程序开发而设计的一个类库。MFC将复杂的Windows API封装成C++类,使得程序员可以...
这本书《C#设计模式》深入浅出地介绍了这些模式,通过实例解析和代码演示,帮助读者掌握如何在实际项目中应用这些模式。无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的编程思维和解决问题的能力。通过...
**深入浅出MFC——VC++编程核心技术** MFC(Microsoft Foundation Classes)是微软公司为开发者提供的一套基于C++的类库,用于简化Windows应用程序的开发。它封装了Windows API,提供了面向对象的编程接口,让...
**深入浅出MFC——侯捷** MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于简化Windows应用程序的开发。侯捷先生的《深入浅出MFC》是一本针对MFC深入理解的经典著作,它详尽地介绍了如何使用MFC...
在HeadFirst的《设计模式》一书中,第一章深入浅出地讲解了这一模式,通过实例帮助读者理解其核心概念和应用场景。 策略模式的核心思想是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。这些算法...
### MFC深入浅出——李久进著作解析 #### 前言 李久进老师的《MFC深入浅出》是一本深入剖析Microsoft Foundation Classes(MFC)的技术书籍,被誉为是学习MFC不可或缺的经典之作。本书不仅系统地介绍了MFC的核心概念...
书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...
李兴华是一位知名的Java教育专家,他的教程通常深入浅出,注重实践,适合初学者和有一定经验的开发者提升技能。以下是根据这个压缩包文件名可能包含的一些Java实战开发知识点: 1. **基础语法**:Java的基础语法是...