博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
极速理解设计模式系列:17.命令模式(Command Pattern)
阅读量:7237 次
发布时间:2019-06-29

本文共 1443 字,大约阅读时间需要 4 分钟。

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

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

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

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

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

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

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

类图:

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

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

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

        一、抽象命令类(Command):

//抽象命令者     public interface ICommand {
void Execute(); }

        二、具体命令类(ConcreteCommand):

//具体命令     public class ConcreteCommand : ICommand {
Receiver receiver; public ConcreteCommand(Receiver receiver) {
this.receiver = receiver; } public void Execute() {
receiver.Operation(); } }

        三、调用者(Invoker):

//调用者     public class Invoker {
private ICommand command; public Invoker(ICommand command) {
this.command = command; } public void ExecCommand() {
command.Execute(); } }

        四、接收者(Receiver):

//接受者     public class Receiver {
public void Operation() {
Console.WriteLine("Cpu通电"); Console.WriteLine("内存通电"); Console.WriteLine("硬盘通电"); Console.WriteLine("光驱通电"); } }

        五、客户端(Client):

class Program {
static void Main(string[] args) {
Receiver receciver = new Receiver(); ICommand cmd = new ConcreteCommand(receciver); Invoker user = new Invoker(cmd); user.ExecCommand(); Console.ReadLine(); } }

        如需源码请点击 下载。

本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/10/20/2213429.html,如需转载请自行联系原作者

你可能感兴趣的文章
IE 的浏览器模式和文本模式(二)
查看>>
css3 背景
查看>>
LVS的DR和NAT模式配置
查看>>
总结概括对于大数据、高并发的网站如何进行优化的问题
查看>>
学习javascript必须订阅30个程序员的Blog
查看>>
如何将Exchange 2007迁移到一台新的服务器并且保留原有服务器名
查看>>
设置控件只读
查看>>
box-align,box-pack实现元素垂直底部对齐
查看>>
poj 2385Apple Catching(简单dp)
查看>>
出现有持续性的Lazy Write
查看>>
bootstrap-辅助类-情境文本颜色
查看>>
Python3类型提示
查看>>
websocket多线程问题
查看>>
从上往下打印二叉树
查看>>
决策支持系统是什么?
查看>>
解压缩
查看>>
Linux中curl命令和wget命令的使用介绍与比较
查看>>
shell之awk 记录
查看>>
python内置数据结构之set
查看>>
function_score 之script_score
查看>>