zoukankan      html  css  js  c++  java
  • 极速理解设计模式系列:17.命令模式(Command Pattern)

    五个角色:抽象命令类(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();
    }
    }

            如需源码请点击 CommandPattern.rar下载。

  • 相关阅读:
    oracle正装表达式匹配中文
    oracle利用循环批量检索对应的数据
    oracle不完全恢复
    informatica简易教程
    oracle创建用户的小问题
    宿主机sqlplus连接虚拟机oracle
    ETL采集原表语句生成
    Mac版 MicrosoftOffice2015 办公软件 破解教程
    BetterZip,支持rar等多种压缩解压方式(Xcode自身不能解压rar)
    Xcode --自动注释插件VVDocumenter-Xcode(配置须知)
  • 原文地址:https://www.cnblogs.com/chengxingliang/p/2213429.html
Copyright © 2011-2022 走看看