命令模式:
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
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#设计模式》深入浅出地介绍了这些模式,通过实例解析和代码演示,帮助读者掌握如何在实际项目中应用这些模式。无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的编程思维和解决问题的能力。通过...
《设计模式精解——GoF 23种设计模式解析及C++实现源码》这一资料深入浅出地介绍了23种GoF设计模式,并提供了详细的C++实现示例。本文将基于该资料概述各设计模式的核心理念及其应用场景。 #### 1. 创建型模式 **...
**深入浅出MFC——VC++编程核心技术** MFC(Microsoft Foundation Classes)是微软公司为开发者提供的一套基于C++的类库,用于简化Windows应用程序的开发。它封装了Windows API,提供了面向对象的编程接口,让...
在HeadFirst的《设计模式》一书中,第一章深入浅出地讲解了这一模式,通过实例帮助读者理解其核心概念和应用场景。 策略模式的核心思想是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。这些算法...
### 设计模式精解——GoF 23种设计模式解析及C++实现 #### 引言 本书《设计模式精解—GoF 23种设计解析 附C++实现》旨在深入探讨由Erich Gamma等四位作者(通常称为GoF四人组)所提出的23种经典设计模式,并通过...
书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...
李兴华是一位知名的Java教育专家,他的教程通常深入浅出,注重实践,适合初学者和有一定经验的开发者提升技能。以下是根据这个压缩包文件名可能包含的一些Java实战开发知识点: 1. **基础语法**:Java的基础语法是...
书中通过一个自动售货机的例子,深入浅出地介绍了状态模式的原理及其在Python中的实现方式。此外,还探讨了如何使用状态机来管理和控制复杂的状态转换逻辑。 #### 装饰器:动态类型选择 装饰器是Python中一种强大...
《面向对象程序设计之C#版》是一本深入浅出、内容丰富的书籍,不仅适合初学者快速入门,也能帮助有一定基础的开发者进一步提升自己的技能。通过一系列生动有趣的例子和实践指导,本书有效地传达了面向对象编程的思想...
本报告通过两个具体的实例——简单工厂模式和工厂方法模式,深入浅出地解释了这两种设计模式的运用。 首先,报告中提到了简单工厂模式。简单工厂模式是一种创建型设计模式,它提供了一个用于创建对象的公共接口,并...