设计模式之命令模式-使用命令模式实现遥控器及总结
先来看看项目结构:
说明:
1:命令接口对象
2:电灯打开或关闭命令
3:音响打开或关闭命令
4:音响音量增加或减少命令
来源:凯哥Java(kaigejava)
电灯开或关代码:
/**
* Created by kaigejava on 2019/8/30.
* 关灯的命令对象
*/
public class LightOffCommand implements ICommandInterface{
private LightAPI light;
public LightOffCommand(LightAPI light){
this.light = light;
}
@Override
public void execute() {
light.Off();
}
@Override
public void undo() {
light.On();
}
}
增加音响音量的类:
/**
* Created by kaigejava on 2019/8/30.
* 给音响增加音量命令对象
*/
public class StereoAddVolCommand implements ICommandInterface{
private StereoAPI setreo;
public StereoAddVolCommand(StereoAPI stereo){
this.setreo = stereo;
}
@Override
public void execute() {
int vol= setreo.GetVol();
if(vol<11)
{
setreo.AddVolume(++vol);
}
}
@Override
public void undo() {
int vol= setreo.GetVol();
if(vol>0)
{
setreo.downVolume(--vol);
}
}
}
命令模式总结:
1:内容
什么是命令模式?命令模式定义。参见上一篇
2:角色
invoker:调用者(如遥控器对象)
Command:命令接口或抽象类(如命令案例中命令接口)
received命令具体实现类(如电灯开对象、音响音量加/减对象)
3:执行顺序
调用者-->接收者-->命令
4:使用场景
当行为的请求者与行为的实现者之间需要解耦的时候(如遥控器项目,请求者是遥控器,行动实现者是各个不同的家电设备),这种场景下可以使用
5:何时使用
在某些场合,比如要对行为进行"记录、撤销/重做、事务"等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将"行为请求者"与"行为实现者"解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。在某些场合,比如要对行为进行"记录、撤销/重做、事务"等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将"行为请求者"与"行为实现者"解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。
6:优缺点
优点:
1、降低了系统耦合度;
2、新的命令可以很容易添加到系统中去。
缺点:
使用命令模式可能会导致某些系统有过多的具体命令类。比如我们遥控器项目中就多了很多具体命令对象。
联系凯哥--》凯哥Java(kaigejava)或凯哥个人博客:www.kaigejava.com 博客上私聊凯哥哦~
7:注意事项
系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作,也可以考虑使用命令模式
相关推荐
在本例中,我们将通过模仿遥控器来理解命令模式的应用。 遥控器是一个常见的日常生活中的例子,它可以控制电视、空调等家用电器。每个按键在遥控器上都对应一个特定的功能,如打开电视、切换频道、调节音量等。这些...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式常用于解耦发出命令的对象和执行命令的...
此外,命令模式还可以与其他设计模式结合使用,如组合模式,用于构建复杂的操作序列。通过将命令对象组合在一起,可以实现更复杂的控制结构,例如宏命令,它能够执行一系列的子命令。 在实际开发中,理解并合理运用...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java中实现命令模式,我们可以按照以下步骤进行: 1. **定义...
命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为对象,从而使您可以使用不同的请求、队列请求或日志请求,并支持可撤销操作。命令模式通常用于实现操作的解耦,使得发送者和接收者之间不直接关联...
命令模式是一种行为设计模式,它将请求封装为一个对象,使得可以使用不同的请求对客户进行参数化,同时支持可撤销的操作、请求队列和请求日志。这种模式的核心在于将发出命令的动作与执行命令的实体分离,使得系统...
命令模式是一种设计模式,主要目的是为了降低行为请求者与行为实现者之间的耦合度,使得系统更加灵活,便于扩展和维护。在C#中,我们可以利用接口和面向对象的特性来实现这一模式。 1. **概述** 命令模式的核心...
【行为模式】Head First 设计模式之命令模式(Command) 命令模式是一种行为设计模式,它将请求封装为一个对象,从而使我们能支持可撤销的操作、参数化对象以及将请求排队等高级操作。在Head First的设计模式书中,...
### Java 23种设计模式之18命令模式详解 #### 模式介绍 命令模式是一种行为设计模式,它把请求封装成一个对象,从而让我们可以用不同的请求对客户端进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作...
**设计模式之Command(命令)模式** Command模式是一种行为设计模式,它将请求封装为一个对象,使得可以使用不同的请求、队列或者日志请求,同时支持可撤销的操作。这种模式在软件工程中广泛应用于解耦请求的发送者...
Command模式是一种行为设计模式,它的主要目的是将命令的发起者(Invoker)与命令的执行者(Receiver)解耦。在Command模式中,一个命令对象封装了特定的请求,调用者(Invoker)只需要知道如何发送命令,而无需知道...
在Java编程中,命令模式是一种非常实用的设计模式,它能帮助我们更好地理解和实现程序中的职责分离。 命令模式的核心结构包括三个主要角色:命令接口(Command Interface)、具体命令(Concrete Command)和接收者...
简单命令模式是一种设计模式,它将请求封装为一个对象,使得可以使用不同的请求、队列请求、记录请求日志以及支持可撤销的操作。在给定的C++代码中,我们看到这种模式的具体实现。 首先,`CCommand` 类是所有命令类...
Java设计模式中的命令模式是一种行为设计模式,它将请求封装为一个对象,使得可以在不同的时间、不同的地方对请求进行参数化、队列化、记录请求日志、支持撤销操作等。这种模式的主要目的是将调用者与实现者解耦,...
命令模式是一种设计模式,它是面向对象编程中的一种行为模式,主要用来封装操作请求以及相关的执行逻辑,使得请求发送者和接收者解耦。在“命令模式-面向对象作业东软”这个主题中,我们将深入探讨命令模式的核心...
例如,一个基于MSP430单片机的智能遥控器,可以通过精确控制单片机的工作模式,在大部分时间都工作在微功率的待机模式,只有在需要发送信号或者接收命令时,才唤醒至全功率模式。这不仅保证了遥控器的响应速度,同时...
面向对象设计模式类图和总结 面向对象设计模式是软件设计中的一种重要思想,它提供了一种灵活、可维护、可扩展的软件设计方法。以下是十个基本的设计模式的总结和类图: 一、策略模式 定义:定义了一个算法家族,...
命令模式是一个行为型设计模式,它将请求封装为对象,从而使你能够参数化客户端。 - **结构**:包含命令接口、具体命令类、接收者类以及调用者类。 - **示例性源代码**:例如,模拟一个遥控器。 - **实现**:通常会...
为了使遥控器能够控制多种不同类型的家电设备,我们需要引入命令模式来解耦遥控器与具体设备之间的关系。 1. **抽象命令(Command)**:定义了一个接口,用于声明执行命令的方法,如`public void execute();`。 2. ...
命令模式是一种行为设计模式,它的核心思想是将请求封装为一个对象,从而让我们可以使用不同的请求、队列请求或者支持撤销操作。在JavaScript中,我们可以用此模式来解耦调用者和接收者,使得系统更加灵活,易于维护...