极速理解设计模式系列:17.命令模式(Command Pattern)

简介:

五个角色:抽象命令类(Command)、具体命令类(ConcreteCommand)、调用者(Invoker)、接收者(Receiver)、客户端(Client) 

        抽象命令类(Command):声明执行操作的接口

        具体命令类(ConcreteCommand):内部有一个接收者,调用接收者实现操作。

        调用者(Invoker):要求命令执行某个操作

        接收者(Receiver):处理具体的操作

        客户端(Client):设定好三方链接,调用者直接操作即可。

实现思路:创建一个命令对象,然后设定其接收者,让调用者引用到一个命令对象,最后调用者直接启动操作即可。

类图:

应用场景:用户开一台电脑。

分析:用户(调用者)开电脑时,面对电脑只有一个开关按钮(命令对象),这个开关按钮会让主板(接收者)通电,由主板去做启动电脑的操作。

        下面我们在控制台程序去演示一下如何使用Command Pattern:

        一、抽象命令类(Command):

 


 
 
  1. //抽象命令者 
  2. public interface ICommand 
  3.     void Execute(); 

        二、具体命令类(ConcreteCommand):

 


 
 
  1. //具体命令 
  2. public class ConcreteCommand : ICommand 
  3.     Receiver receiver; 
  4.     public ConcreteCommand(Receiver receiver) 
  5.     { 
  6.         this.receiver = receiver; 
  7.     } 
  8.     public void Execute() 
  9.     { 
  10.         receiver.Operation(); 
  11.     } 

        三、调用者(Invoker):

 


 
 
  1. //调用者 
  2. public class Invoker 
  3.     private ICommand command; 
  4.     public Invoker(ICommand command) 
  5.     { 
  6.         this.command = command; 
  7.     } 
  8.     public void ExecCommand() 
  9.     { 
  10.         command.Execute(); 
  11.     } 

        四、接收者(Receiver):

 


 
 
  1. //接受者 
  2. public class Receiver 
  3.     public void Operation() 
  4.     { 
  5.         Console.WriteLine("Cpu通电"); 
  6.         Console.WriteLine("内存通电"); 
  7.         Console.WriteLine("硬盘通电"); 
  8.         Console.WriteLine("光驱通电"); 
  9.     } 

        五、客户端(Client):

 


 
 
  1. class Program 
  2.     static void Main(string[] args) 
  3.     { 
  4.         Receiver receciver = new Receiver(); 
  5.         ICommand cmd = new ConcreteCommand(receciver); 
  6.         Invoker user = new Invoker(cmd); 
  7.         user.ExecCommand(); 
  8.         Console.ReadLine(); 
  9.     } 

        如需源码请点击 CommandPattern.rar下载。



本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/827033

相关文章
|
11月前
|
设计模式 消息中间件 Java
【设计模式】【行为型模式】命令模式(Command)
一、入门 什么是命令模式? 命令模式是一种行为设计模式,它将请求或操作封装为对象,从而使你可以用不同的请求对客户进行参数化,并支持请求的排队、记录、撤销等操作。 命令模式的核心是将“请求”封装为独立的
302 15
|
设计模式 存储 算法
「全网最细 + 实战源码案例」设计模式——命令模式
命令模式(Command Pattern)是一种行为型设计模式,将请求封装成独立对象,从而解耦请求方与接收方。其核心结构包括:Command(命令接口)、ConcreteCommand(具体命令)、Receiver(接收者)和Invoker(调用者)。通过这种方式,命令的执行、撤销、排队等操作更易扩展和灵活。 适用场景: 1. 参数化对象以操作。 2. 操作放入队列或远程执行。 3. 实现回滚功能。 4. 解耦调用者与接收者。 优点: - 遵循单一职责和开闭原则。 - 支持命令组合和延迟执行。 - 可实现撤销、恢复功能。 缺点: - 增加复杂性和类数量。
463 14
「全网最细 + 实战源码案例」设计模式——命令模式
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
设计模式 存储 算法
Java设计模式-命令模式(16)
Java设计模式-命令模式(16)
247 2
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
设计模式 存储 Java
【十二】设计模式~~~行为型模式~~~命令模式(Java)
文章详细介绍了命令模式(Command Pattern),这是一种对象行为型模式,用于将请求封装成对象,实现请求发送者与接收者的解耦,从而降低系统耦合度、提高灵活性,并支持命令的排队、记录、撤销和恢复操作。通过案例分析、结构图、时序图和代码示例,文章展示了命令模式的组成部分、实现方式和应用场景,并讨论了其优点、缺点和适用情况。
|
设计模式 JavaScript API
js设计模式【详解】—— 命令模式
js设计模式【详解】—— 命令模式
224 6
|
11月前
|
设计模式 Java 数据库连接
【设计模式】【创建型模式】工厂方法模式(Factory Methods)
一、入门 什么是工厂方法模式? 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定实例化哪个类。工厂方法模式使类的实例化延迟
317 16
|
11月前
|
设计模式 负载均衡 监控
并发设计模式实战系列(2):领导者/追随者模式
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发设计模式实战系列,第二章领导者/追随者(Leader/Followers)模式,废话不多说直接开始~
326 0