解读设计模式----命令模式(Command Pattern)

本文与作者原文有一定的偏差,其中加入了一部分是个人看法,详细请查看作者原文。***

原文连接http://www.dofactory.com/Patterns/PatternCommand.aspx

命令模式意图:

GOF 在《设计模式》一书中阐述其意图:“将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。”这里所谓的“不同的请求”也既意味着请求可能发生的变化,是一个可能扩展的功能点。

命令模式UML图:

Command模式将一个请求封装为一个对象,从而使你可以使用不同的请求对客户进行参数化。

简单示例: Client

1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace DesignPattern.Command
6{
7  class Program
8  {
9    static void Main(string[] args)
10    {
11      // 创建receiver、command和invoker
12      Receiver receiver = new Receiver();
13
14      //根据多态,父类的引用指向子类对象
15      Command command = new ConcreteCommand(receiver);
16      Invoker invoker = new Invoker();
17
18      //设置和执行命令
19      invoker.SetCommand(command);
20      invoker.ExecuteCommand();
21
22      Console.Read();
23    }
24  }
25}
26

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索command
, 命令
, 设计模式
, 模式
, 一个
, receiver
Command模式
command pattern、command命令、红色命令 red command、command prompt 命令、linux command命令,以便于您获取更多的相关知识。

时间: 2024-12-03 22:56:12

解读设计模式----命令模式(Command Pattern)的相关文章

乐在其中设计模式(C#) - 命令模式(Command Pattern)

原文:乐在其中设计模式(C#) - 命令模式(Command Pattern)[索引页][源码下载] 乐在其中设计模式(C#) - 命令模式(Command Pattern) 作者:webabcd 介绍 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可取消的操作. 示例 有一个Message实体类,某个类对它的操作有Insert()和Delete()方法.现在要求可以对之前的所有操作做撤销和重复. MessageModel using Sys

.Net设计模式实例之命令模式(Command Pattern)

一.命令模式简介(Brief Introduction) 命令模式(Command Pattern)将请求封装为一个对象,从而使你用不同的请求对客户进 行参数化,对请求排队或纪录请求日志,以及支持可撤销的操作. Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoabl

解读设计模式----外观模式(Facade Pattern)

一.模式简介 外观模式(Facade Pattern)可以将一系列复杂的类包装成一个简单的封闭接口.也称门面模式. 二.模式意图 每一种设计模式都有它的意图,我们看看设计模式的祖师们是怎么说的.按照GOF的说法,Facade模式的意图是:为了子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 三.模式UML(下图转自http://www.dofactory.com/) 四.模式参与者 门面(Facade)角色:客户端可以调用这个角色的方

解读设计模式----代理模式(Proxy Pattern)

一.说买电脑的那些事 我之前一直用的是台式机,可总感觉不方便,特别是携带,就拿租房子后搬家来说吧,费了不少劲.种种原因有了想换笔记本的想法.5.1假期和一个好朋友特到电脑城去逛了一圈,一进电脑城便见:"HP笔记本XX总代理.IBM笔记本专卖.XX电脑YY总代理......". 看了很多家销售店,给我印象最深的就是到处都是XX牌电脑专卖和代理商,就在同一层楼里我就见着同一牌子有6家代理销售商铺.呵呵,看来我们买电脑就直接找销售代理商就可以,没必要在找生产厂商了,厂商生产出电脑后就是要把产

解读设计模式----迭代器模式(Iterator Pattern)

一.你在开发中使用过迭代吗? 当你在使用JavaScript开发客户端应用的时候使用过for...in吗? 1<script type="text/javascript"> 2var obj; 3useForIn = function () 4{ 5 obj = (0,1,2,3,4,5,6,7,8,9); 6 for(var o in obj) 7 { 8 document.write(o); 9 } 10} 11</script> 当你在.NET Frame

设计模式 ( 十三 ) 命令模式Command(对象行为型)

设计模式 ( 十三 ) 命令模式Command(对象行为型) 1.概述         在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活.  例子1:电视机遥控器 : 遥控器是请求的发送者,电视机是请求的接收者,遥控器上有一些按钮如开,关,换频道等按钮就是具体命令,不同的按钮对应电视机的不

.NET设计模式-命令模式(Command Pattern)

命令模式(Command Pattern) --.NET设计模式系列之十七 TerryLee,2006年7月 概述 在软件系统中,"行为请求者"与"行为实现者"通常呈现一种"紧耦合".但在某些场合,比如要对行为进行"记录.撤销/重做.事务"等处理,这种无法抵御变化的紧耦合是不合适的.在这种情况下,如何将"行为请求者"与"行为实现者"解耦?将一组行为抽象为对象,可以实现二者之间的松耦合[李

[Head First设计模式]餐馆中的设计模式——命令模式

系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式--建造者模式 [Head First设计模式]饺子馆(冬至)中的设计模式--工厂模式 [Head First设计模式]一个人的平安夜--单例模式 [Head First设计模式]抢票中的设计模式--代理模式 [Head First设计模式]面向对象的3特征5原则 [Head First设计模式]鸭子

经典设计模式——命令模式

    考虑这样一种场景,某个方法需要完成某一个功能,完成这个功能的大部分步骤已经确定了,但可能有少量具体步骤无法确定,必须等到该方法执行时才可以确定.具体一点:假设有个方法需要遍历某个数组的数组元素,但无法确定在遍历数组元素时如何处理这些元素,需要调用该方法时指定具体的处理行为.这个要求看起来有点奇怪:这个方法不仅要求传入参数可以变化,甚至要求方法执行体的代码也可以变化,难道我们能把"处理行为"作为一个参数传入该方法?     很遗憾,Java语言暂时还不支持将代码块作为参数传递给方