首页 > 其他分享 >设计模式command

设计模式command

时间:2024-08-27 19:15:57浏览次数:7  
标签:execute light void Command Light command 设计模式 public

命令(Command)设计模式是一种行为型设计模式,它将请求封装为对象,从而使你可以将请求的发起者和请求的接收者解耦。这样,你可以使用不同的请求、队列或日志来管理请求,还可以支持可撤销的操作。

以下是一个简单的命令模式的例子:

假设我们有一个简单的遥控器,它可以控制灯的开和关。我们将定义一些命令对象来表示这些操作:

  1. 命令接口

    java public interface Command { void execute(); }
  2. 具体命令实现

    java public class LightOnCommand implements Command { private Light light; public LightOnCommand(Light light) { this.light = light; } @Override public void execute() { light.turnOn(); } } public class LightOffCommand implements Command { private Light light; public LightOffCommand(Light light) { this.light = light; } @Override public void execute() { light.turnOff(); } }
  3. 接收者

    java public class Light { public void turnOn() { System.out.println("Light is ON"); } public void turnOff() { System.out.println("Light is OFF"); } }
  4. 请求发起者(遥控器)

    java public class RemoteControl { private Command command; public void setCommand(Command command) { this.command = command; } public void pressButton() { command.execute(); } }
  5. 客户端代码

    java public class Client { public static void main(String[] args) { Light light = new Light(); Command lightOn = new LightOnCommand(light); Command lightOff = new LightOffCommand(light); RemoteControl remote = new RemoteControl(); remote.setCommand(lightOn); remote.pressButton(); // Output: Light is ON remote.setCommand(lightOff); remote.pressButton(); // Output: Light is OFF } }

在这个示例中:

  • Command 是一个命令接口,定义了 execute 方法。
  • LightOnCommandLightOffCommand 是具体的命令实现,分别封装了打开和关闭灯的操作。
  • Light 是接收者,实际执行操作的对象。
  • RemoteControl 是请求发起者,它持有一个 Command 对象并在按钮按下时调用 execute 方法。

这样,遥控器(请求发起者)不需要知道具体的操作细节,只需要调用 execute 方法,这些操作的具体实现都封装在命令对象里。这使得代码更加灵活和可扩展。

标签:execute,light,void,Command,Light,command,设计模式,public
From: https://www.cnblogs.com/spicy-food/p/18383348

相关文章

  • 设计模式Chain of Responsibility(责任链)
    ChainofResponsibility(责任链)模式是一种行为型设计模式,用于处理请求的多个处理者之间的职责分配。它允许请求沿着一条处理链传递,直到有一个处理者能够处理它为止。这种模式可以避免请求发送者和请求处理者之间的紧耦合关系。主要概念Handler(处理者):定义了处理请求的接口,并实现......
  • esp-idf vscode debug command 'espIdf.getXtensaGdb' not found
    esp32idfvscodedebug错误vscode中配置文件采用的是正点原子的,调用gdb的时候,提示报错,找不到相应的命令launch.json文件中gdb的配置如下{"version":"0.2.0","configurations":[ { "name":"GDB", "type":"cppdbg", &......
  • 设计模式FlyWeight 享元模式
    Flyweight模式的核心思想是将对象的可共享部分抽取出来,以避免重复创建相同内容的对象。换句话说,Flyweight模式允许多个对象共享相同的数据来节省内存。 示例代码java复制代码importjava.util.HashMap;importjava.util.Map;//Flyweight接口interfaceShape{voiddr......
  • 设计模式 bridge & decorator
     目的Decorator模式:用于动态地给对象添加新的功能,而不改变其结构。它通过将对象放入一个装饰器类中,在运行时为对象添加额外的行为。这种模式通常用于需要对类的功能进行组合或扩展的场景。Bridge模式:用于将抽象部分与其实现部分分离,以便它们可以独立地变化。桥接模式的......
  • 设计模式--适配器模式
    适配器模式适配器模式(AdapterPattern)是一种结构型设计模式,它允许一个接口(通常是新的或现有的)与另一个不兼容的接口一起工作。适配器模式主要用于解决接口不匹配的问题,让原本由于接口不兼容而不能一起工作的类可以一起工作。下面,我将通过一个简单的例子来展示适配器模式的......
  • 【Kotlin设计模式】Kotlin实现外观模式
    前言外观模式(FacadePattern)是一种结构型设计模式,旨在为子系统中的一组接口提供一个统一的接口。外观模式定义了一个高层接口,使得这一子系统更加容易使用。它将复杂的子系统封装在一个简单的接口后面,从而降低了客户端的复杂性。实现我们以银行APP业务举个例子,其中包......
  • 行为型设计模式-模板方法(template method)模式
    通俗示例想象一下你正在制作一杯咖啡,制作咖啡的步骤大致相同,但有些步骤可以根据个人口味进行调整,比如选择咖啡豆、添加糖和奶等。在这种情况下,可以定义一个“制作咖啡”的模板,它规定了制作咖啡的基本步骤,但将某些步骤的具体实现留给子类完成。这就是模板方法模式的一个例子......
  • C++ 设计模式——享元模式
    C++设计模式——享元模式C++设计模式——享元模式1.主要组成成分2.享元模式内部状态3.享元模式外部状态4.逐步构建享元模式4.1抽象享元类定义4.2具体享元类实现4.3享元工厂类实现4.4主函数5.享元模式UML图享元模式UML图解析6.享元模式的优点7.享元模......
  • 设计模式基础
    1.面向对象设计的原则(七大原则)1.1单一职责(SPR:SingleResponsibilitiesPrinciple):一个类应只负责一个功能领域的相关职责,即只有一个使它变化的原因1.2开放闭合(OCP:Open-ClosePrinciple):软件实体应对扩展开发,对修改关闭,即实体可以扩展,但不能在原来的实体上修改1.3里氏代换(LSP:......
  • 设计模式2个黄鹂鸣翠柳-《分析模式》漫谈23
    DDD领域驱动设计批评文集做强化自测题获得“软件方法建模师”称号《软件方法》各章合集“AnalysisPatterns”的第一章有这么一句:The"GangofFour"bookhashadmuchmoreinfluenceinsoftwarepatternsthanAlexander'swork,and three outofthose four auth......