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

相关文章
|
3月前
|
设计模式 算法 Java
行为型设计模式-策略模式(Strategy Pattern)
行为型设计模式-策略模式(Strategy Pattern)
|
6天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
12 1
|
13天前
|
设计模式 Java
23种设计模式,命令模式的概念优缺点以及JAVA代码举例
【4月更文挑战第7天】命令模式是一种行为设计模式,它将请求或简单操作封装为一个对象。这种模式允许用户通过调用对象来参数化其他对象的方法,并能保存、排队和执行方法调用。
18 1
|
1月前
|
设计模式 存储 Java
【设计模式】命令模式
【设计模式】命令模式
|
3月前
|
设计模式 Java
设计模式-命令模式
设计模式-命令模式
33 1
|
3月前
|
设计模式 Java
设计模式-命令模式(Command)
设计模式-命令模式(Command)
32 0
|
3月前
|
设计模式 存储 Java
Java设计模式-命令模式
命令(Command)模式是指将请求封装成为一个对象,使发出请求和执行请求的责任分割开,方便将命令对象进行存储、传递、调用、增加与管理。 也就是将发送者、接收者和调用命令封装成独立的对象,来供客户端调用。属于行为模式的一种。
29 1
Java设计模式-命令模式
|
3月前
|
设计模式 Go 开发工具
Golang设计模式——06命令模式
Golang设计模式——06命令模式
20 0
|
3月前
|
设计模式 存储 前端开发
【设计模式】之命令模式
命令模式是一种非常有用的设计模式,在前端开发中经常用于管理和执行操作。它通过将操作封装成对象,并将其作为参数传递、存储或记录,实现了优雅地管理和执行操作。通过使用命令模式,我们可以提高代码的可维护性和可扩展性。然而,在应用命令模式时需要权衡其带来的优缺点,并根据具体情况进行选择。
39 0
|
3月前
|
设计模式 存储 算法
【设计模式】命令模式
欢迎来到【设计模式】系列博客,今天我们将探讨其中一种重要的设计模式——命令模式。设计模式是软件开发中解决常见问题的最佳实践,而命令模式则是其中一种非常实用的设计模式,它可以帮助我们更好地组织和管理请求或命令。在本篇博客中,我们将详细介绍命令模式的定义、特点、使用场景以及实现方式。通过具体的案例和实践,我们将深入了解命令模式在实际项目中的应用和优势。同时,我们还将分享一些注意事项和最佳实践,以帮助您更好地理解和应用命令模式。
55 1
【设计模式】命令模式