`

设计模式之命令模式-使用命令模式实现遥控器及总结

 
阅读更多

设计模式之命令模式-使用命令模式实现遥控器及总结

先来看看项目结构:

说明:

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)操作,也可以考虑使用命令模式

0
0
分享到:
评论

相关推荐

    设计模式--命令模式 (模仿遥控器)

    在本例中,我们将通过模仿遥控器来理解命令模式的应用。 遥控器是一个常见的日常生活中的例子,它可以控制电视、空调等家用电器。每个按键在遥控器上都对应一个特定的功能,如打开电视、切换频道、调节音量等。这些...

    设计模式-命令模式(讲解及其实现代码)

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式常用于解耦发出命令的对象和执行命令的...

    设计模式-命令模式

    此外,命令模式还可以与其他设计模式结合使用,如组合模式,用于构建复杂的操作序列。通过将命令对象组合在一起,可以实现更复杂的控制结构,例如宏命令,它能够执行一系列的子命令。 在实际开发中,理解并合理运用...

    设计模式之命令模式Java实现

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java中实现命令模式,我们可以按照以下步骤进行: 1. **定义...

    c++-设计模式之命令模式(Command Pattern)

    命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为对象,从而使您可以使用不同的请求、队列请求或日志请求,并支持可撤销操作。命令模式通常用于实现操作的解耦,使得发送者和接收者之间不直接关联...

    设计模式之命令模式

    命令模式是一种行为设计模式,它将请求封装为一个对象,使得可以使用不同的请求对客户进行参数化,同时支持可撤销的操作、请求队列和请求日志。这种模式的核心在于将发出命令的动作与执行命令的实体分离,使得系统...

    C# 设计模式系列教程-命令模式

    命令模式是一种设计模式,主要目的是为了降低行为请求者与行为实现者之间的耦合度,使得系统更加灵活,便于扩展和维护。在C#中,我们可以利用接口和面向对象的特性来实现这一模式。 1. **概述** 命令模式的核心...

    [行为模式] head first 设计模式之命令模式(Command)

    【行为模式】Head First 设计模式之命令模式(Command) 命令模式是一种行为设计模式,它将请求封装为一个对象,从而使我们能支持可撤销的操作、参数化对象以及将请求排队等高级操作。在Head First的设计模式书中,...

    Java 23种设计模式18命令模式 .pdf

    ### Java 23种设计模式之18命令模式详解 #### 模式介绍 命令模式是一种行为设计模式,它把请求封装成一个对象,从而让我们可以用不同的请求对客户端进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作...

    设计模式之Command(命令)模式

    **设计模式之Command(命令)模式** Command模式是一种行为设计模式,它将请求封装为一个对象,使得可以使用不同的请求、队列或者日志请求,同时支持可撤销的操作。这种模式在软件工程中广泛应用于解耦请求的发送者...

    设计模式之Command模式和代码实现

    Command模式是一种行为设计模式,它的主要目的是将命令的发起者(Invoker)与命令的执行者(Receiver)解耦。在Command模式中,一个命令对象封装了特定的请求,调用者(Invoker)只需要知道如何发送命令,而无需知道...

    java设计模式之命令模式

    在Java编程中,命令模式是一种非常实用的设计模式,它能帮助我们更好地理解和实现程序中的职责分离。 命令模式的核心结构包括三个主要角色:命令接口(Command Interface)、具体命令(Concrete Command)和接收者...

    head first 设计模式简单命令模式C++实现

    简单命令模式是一种设计模式,它将请求封装为一个对象,使得可以使用不同的请求、队列请求、记录请求日志以及支持可撤销的操作。在给定的C++代码中,我们看到这种模式的具体实现。 首先,`CCommand` 类是所有命令类...

    72-Java设计模式 命令模式1

    Java设计模式中的命令模式是一种行为设计模式,它将请求封装为一个对象,使得可以在不同的时间、不同的地方对请求进行参数化、队列化、记录请求日志、支持撤销操作等。这种模式的主要目的是将调用者与实现者解耦,...

    命令模式-面向对象作业东软

    命令模式是一种设计模式,它是面向对象编程中的一种行为模式,主要用来封装操作请求以及相关的执行逻辑,使得请求发送者和接收者解耦。在“命令模式-面向对象作业东软”这个主题中,我们将深入探讨命令模式的核心...

    超低功耗单片机实现智能遥控器设计.pdf

    例如,一个基于MSP430单片机的智能遥控器,可以通过精确控制单片机的工作模式,在大部分时间都工作在微功率的待机模式,只有在需要发送信号或者接收命令时,才唤醒至全功率模式。这不仅保证了遥控器的响应速度,同时...

    面向对象10个设计模式类图和总结

    面向对象设计模式类图和总结 面向对象设计模式是软件设计中的一种重要思想,它提供了一种灵活、可维护、可扩展的软件设计方法。以下是十个基本的设计模式的总结和类图: 一、策略模式 定义:定义了一个算法家族,...

    C#设计模式大全

    命令模式是一个行为型设计模式,它将请求封装为对象,从而使你能够参数化客户端。 - **结构**:包含命令接口、具体命令类、接收者类以及调用者类。 - **示例性源代码**:例如,模拟一个遥控器。 - **实现**:通常会...

    06-命令模式.pdf

    为了使遥控器能够控制多种不同类型的家电设备,我们需要引入命令模式来解耦遥控器与具体设备之间的关系。 1. **抽象命令(Command)**:定义了一个接口,用于声明执行命令的方法,如`public void execute();`。 2. ...

    js代码-设计模式之命令模式-简单的宏命令

    命令模式是一种行为设计模式,它的核心思想是将请求封装为一个对象,从而让我们可以使用不同的请求、队列请求或者支持撤销操作。在JavaScript中,我们可以用此模式来解耦调用者和接收者,使得系统更加灵活,易于维护...

Global site tag (gtag.js) - Google Analytics