极速理解设计模式系列: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

相关文章
|
4月前
|
设计模式 存储 算法
Java设计模式-命令模式(16)
Java设计模式-命令模式(16)
|
4月前
|
设计模式
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
4月前
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
5月前
|
设计模式 存储 Java
【十二】设计模式~~~行为型模式~~~命令模式(Java)
文章详细介绍了命令模式(Command Pattern),这是一种对象行为型模式,用于将请求封装成对象,实现请求发送者与接收者的解耦,从而降低系统耦合度、提高灵活性,并支持命令的排队、记录、撤销和恢复操作。通过案例分析、结构图、时序图和代码示例,文章展示了命令模式的组成部分、实现方式和应用场景,并讨论了其优点、缺点和适用情况。
|
6月前
|
设计模式 JavaScript API
js设计模式【详解】—— 命令模式
js设计模式【详解】—— 命令模式
54 6
|
7月前
|
设计模式
命令模式-大话设计模式
命令模式-大话设计模式
|
7月前
|
设计模式
设计模式-05建造者模式(Builder Pattern)
设计模式-05建造者模式(Builder Pattern)
|
7月前
|
设计模式 Java uml
必知的技术知识:JAVA【设计模式】命令模式
必知的技术知识:JAVA【设计模式】命令模式
33 0
|
7月前
|
设计模式 Java
Java设计模式之命令模式详解
Java设计模式之命令模式详解
|
5天前
|
设计模式 前端开发 搜索推荐
前端必须掌握的设计模式——模板模式
模板模式(Template Pattern)是一种行为型设计模式,父类定义固定流程和步骤顺序,子类通过继承并重写特定方法实现具体步骤。适用于具有固定结构或流程的场景,如组装汽车、包装礼物等。举例来说,公司年会节目征集时,蜘蛛侠定义了歌曲的四个步骤:前奏、主歌、副歌、结尾。金刚狼和绿巨人根据此模板设计各自的表演内容。通过抽象类定义通用逻辑,子类实现个性化行为,从而减少重复代码。模板模式还支持钩子方法,允许跳过某些步骤,增加灵活性。