Command模式的实践

主题

文章将通过一个简单的 Shell  库来阐述 Command模式的一个实际应用。

如何使用 Shell 库

在开始之前,我们先来看看如何使用这个 Shell 库。 解决方案结构如(图1-1)

图1-1 解决方案

从图上可以看出,该 Shell 库非常的简单。其中 ICommand 接口定义了只定义了一个 Execute 方法,该方法的签名见代码清单 1-1.

代码清单 1-1

    /// <summary>执行命令并返回命令执行结果</summary>
    /// <param name="args">需要执行的命令</param>
    /// <param name="executeMessage">命令执行结果</param>
    void Execute(string[] args, ref string executeMessage);

Command 项目中包含了实现了 ICommand 接口的具体类。 见代码清单 1-2

代码清单 1-2 

    public class AddUserCommand : ICommand
    {
        public void Execute(string[] args, ref string executeMessage)
        {
            if (args.Length != 3 || Share.IsHasAnySpace(args))
            {
                executeMessage = "AddUser 命令参数不正确!格式如下:AddUser userName passWord";
                return;
            }
            string userName = args[1];
            string passWord = args[2];
            BllFactory.BllFactory.GetInstance().User.AddUser(userName, passWord);
            executeMessage = string.Format("添加用户 {0} 成功!", userName);
        }
    }

该具体类由客户负责创建。在代码清单 1-2 中,AddUserCommand 类实现了 ICommand 接口。具体的 Execute  方法的实现是调用了BLL层的 AddUser 方法去完成了添加用户的操作。

Command模式的实践相关推荐

  1. 使用Command模式实现撤销机制 (Code Project 精选翻译)

    使用Command模式实现撤销机制[1] Written by Matt Berther Translated by Allen Lee[2] Reviewed by Teddy Tam & ...

  2. COMMAND 模式

    COMMAND 模式 --<敏捷软件开发 原则.模式与实践(c#版)>第21章 描述  COMMAND模式是最简单.最优雅的模式之一. 如图1-1所示,COMMAND模式简单的几乎可笑.该 ...

  3. 知识点3-设计模式与实践

    关联文章 相关文章 链接 知识点1-分布式与中间件 https://blog.csdn.net/x526967803/article/details/109101719 知识点2-大数据与高并发 ht ...

  4. 敏捷软件开发:原则、模式与实践pdf

    下载地址:网盘下载 内容简介  · · · · · · 在本书中,享誉全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员.项目经理及软件项目领导们所面临的最棘 ...

  5. 《敏捷软件开发:原则、模式与实践(C#版.修订版)》—第1章1.4节参考文献

    本节书摘来自异步社区<敏捷软件开发:原则.模式与实践(C#版.修订版)>一书中的第1章1.4节参考文献,作者[美]Robert C. Martin , Micah Martin,更多章节内 ...

  6. 行为模式之Command模式

    1.意图 将一个请求封装为一个对象,从而你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤消的操作. 2.适用性 在以下情况下使用 (1)抽象出待执行的动作以参数化某对象.你可用 ...

  7. 设计模式--命令(Command)模式

    模式定义 将一个请求(行为)封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作 类图 要点总结 Command模式的根本目的在于将"行为请 ...

  8. 微软模式与实践团队发布Enterprise Library 4.1及Unity Application Block 1.2

    微软模式与实践团队发布Enterprise Library 4.1及Unity Application Block 1.2,具体可参看InfoQ的新闻http://www.infoq.com/cn/n ...

  9. 敏捷软件开发:原则、模式与实践(C#版)

    刚才在china-pub看到<敏捷软件开发:原则.模式与实践(C#版)>已经出版了.这本书是以前那本<敏捷软件开发:原则.模式与实践>的C#版,这是不是说明C#程序员的数量已经 ...

最新文章

  1. STL nth_element
  2. rt-thread的定时器管理源码分析
  3. 快速上手RaphaelJS-Instant RaphaelJS Starter翻译(一)
  4. structs2文件下载
  5. LLLYYY的数字思维
  6. git针对已有仓库或已有文件的初始化操作
  7. c语言 malloc_C语言快速入门——动态内存分配
  8. Pandas时序数据处理入门
  9. 网站登陆页面设计灵感,UI设计得有这个范儿
  10. CSU计算机图形学复习
  11. 测试Android应用程序的逆向方法和寻找攻击面的技巧
  12. python选择语句是什么语句_Python语言中的三种选择语句
  13. keil5 项目管理
  14. 能源管理零代码开发工具
  15. 回调函数透彻理解Java
  16. Echarts 地图基本使用
  17. kubectl源码分析之rollout status
  18. 使用 Zadig 交付云原生微服务应用
  19. thinkphp 邮箱配置完美测试
  20. 我想做安卓开发,怎么系统学习?

热门文章

  1. 不容错过的Pandas小技巧:万能转格式、轻松合并、压缩数据,让数据分析更高效...
  2. 谷歌「模型汤」靠微调屠了ImageNet的榜!方法竟然只有半页纸
  3. 北大美女学霸力压大神何恺明新作MAE!怒摘12个SOTA,灵感竟来自16年前CVPR论文...
  4. 如何防止我的模型过拟合?这篇文章给出了6大必备方法
  5. 亚马逊:我们提取了BERT的一个最优子架构,只有Bert-large的16%,CPU推理速度提升7倍...
  6. 华人斩获最佳Demo论文,Bengio获时间检验奖,最佳论文突破NLP传统测试方法 | ACL 2020...
  7. 美多商城之用户中心(收货地址1)
  8. k近邻算法之 k值的选择
  9. MySQL数据库分页查询limit
  10. Python Scrapy