《C#设计模式》==>命令模式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DesignPattern
{
    internal class CommandPattern
    {
        //命令模式
        //将一个请求封装为一个对象,从而可以让你用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。
        //
        private void main()
        {
            //客户端实现

            FunctionButton fb = new FunctionButton();
            Command command=new HelpCommand();
            //Command command = new ExitCommand();   //可以将功能键绑定的具体命令存放在配置文件中或者数据库中,通过反射的方式进行Command创建
            fb.Commadn=command;
            fb.Click();


            //输出
            //单击功能键
            //退出系统
        }
    }
    



    #region 功能键,调用者(invoker)
    //功能键类
    class FunctionButton
    {
        private Command command;
        //为功能键注入命令
        public Command Commadn
        {
            get { return command; }
            set { command = value; }
        }
        //发送请求的方法
        public void Click()
        {
            Console.WriteLine("单击功能键!");
            command.Execute();
        }

    } 
    #endregion

    #region 抽象命令,调用者针对抽象命令编程。 具体命令可以在配置文件或数据库中动态指定,反射创建,符合开闭原则
    //抽象命令类
    abstract class Command
    {
        public abstract void Execute();
    } 

    #endregion

    #region 退出命令及其实现类
    //退出命令类
    class ExitCommand : Command
    {
        private SystemExitClass seOBJ;   //维持对请求接收者的引用

        public ExitCommand()
        {
            seOBJ = new SystemExitClass();
        }

        //命令执行方法,将调用请求接收者的业务方法
        public override void Execute()
        {
            seOBJ.Exit();
        }
    }
    //退出系统模拟实现类,充当请求接收者
    class SystemExitClass
    {
        public void Exit()
        {
            Console.WriteLine("退出系统!");
        }
    } 
    #endregion

    #region 帮助命令及其实现类
    //帮助命令类
    class HelpCommand : Command
    {
        private DisplayHelperClass hcOBJ;//维持对请求接收者的引用
        public HelpCommand()
        {
            hcOBJ = new DisplayHelperClass();
        }

        //命令执行方法,将调用请求接收者的业务方法
        public override void Execute()
        {
            hcOBJ.Display();
        }
    }

    //显示帮助文档模拟实现类,充当请求接收者。
    class DisplayHelperClass
    {
        public void Display()
        {
            Console.WriteLine("显示帮助文档!");
        }
    } 
    #endregion

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值