Jimmypony的技术汇总区
很多都不会,很多都不懂,不要浮躁,静心学习
posts - 51,comments - 22,views - 75074

命令模式:

把需求的请求者和需求的执行者从对象中解耦出来,我个人的理解是把请求者和执行者分离,执行者封装复杂的执行过程,通过请求者的指示找到不同的执行者来处理或者执行不同的过程。

以下以命令者 命令传递者 命令执行者为例,解释妈妈喊起床的过程:

 

复制代码
  1    /// <summary>
  2    /// 命令者
  3    /// </summary>

  4    public interface ICommand
  5    {
  6        void SetCommand(IOrder order);
  7        void Press();
  8    }

  9
 10    /// <summary>
 11    /// 命令接受者
 12    /// </summary>

 13    public interface IOrder 
 14    {
 15        void AddOrder(IAction action);
 16        void ShowAction();
 17    }

 18
 19    /// <summary>
 20    /// 命令内容处理者
 21    /// </summary>

 22    public interface IAction 
 23    {
 24        void Action();
 25    }

 26
 27    public class Commmander : ICommand
 28    {
 29        private IOrder order;
 30
 31        ICommand Members
 48    }

 49
 50    public class Order : IOrder
 51    {
 52        private List<IAction> actions=new List<IAction>();
 53
 54        IOrder Members
 71    }

 72
 73    命令操作
124
125    class Program
126    {
127        static void Main(string[] args)
128        {
129            ICommand cmd = new Commmander();
130            //当然我在这里写的比较简单
131            //复杂的Order定制可以用到工厂模式
132            IOrder order = new Order();
133
134            order.AddOrder(new Up());
135            order.AddOrder(new Toothbrushing());
136            order.AddOrder(new Wash());
137            order.AddOrder(new Out());
138            cmd.SetCommand(order);
139            cmd.Press();
140
141            Console.Read();
142        }

143    }
复制代码
 


posted on   Jim~  阅读(270)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
< 2008年9月 >
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4
5 6 7 8 9 10 11

点击右上角即可分享
微信分享提示