zoukankan      html  css  js  c++  java
  • C#设计模式--命令模式(学习Learning hard C#设计模式笔记)

    原文地址http://www.cnblogs.com/zhili/p/CommandPattern.html

    class Program
        {
            static void Main(string[] args)
            {
                //实现命令的人 执行命令的人,下命令的人
                Receiver receiver = new Receiver();
                Command command = new ConcreateCommand(receiver);
                Invoke invoke = new Invoke(command);
    
                //下命令
                invoke.ExecuteCommand();
                
                
                Console.Read();
            }
        }
    
    
        //教官 负责调用命令执行任务
        public class Invoke
        {
            public Command command;
    
            public Invoke(Command command)
            {
                this.command = command;
            }
    
            public void ExecuteCommand()
            {
                command.Action();//跑步
                command.ActionTiao();//跳舞
            }
        }
    
          //命令抽象类
        public abstract class Command
        {
            protected Receiver receiver;
    
            public Command(Receiver receiver)
            {
                this.receiver = receiver;
            }
    
            //命令执行方法
            public abstract void Action();
    
            //加命令 进行扩展 跳舞 --------------扩展 跳舞
            public abstract void ActionTiao();
        }
    
        public class ConcreateCommand : Command
        {
            public ConcreateCommand(Receiver receiver):base(receiver)
            {
            }
            //执行命令
            public override void Action()
            {
                receiver.Run1000Meters();
            }
    
            //跳舞
            public override void ActionTiao()
            {
                receiver.TiaoWu();
            }
        }
    
        //命令有一个学生实现
        public class Receiver
        {
            public void Run1000Meters()
            {
                Console.WriteLine("跑1000米");
            }
    
            public void TiaoWu()
            {
                Console.WriteLine("跳舞……");
            }
        }
    

      如果需要扩展,在命令类、抽象类、实现类、学生类中进行声明即可,客户端不用修改,

  • 相关阅读:
    css基础教程
    网页加载-上下幕布分开
    Vue-Aixos
    webpack学习
    Vue、Element 路由跳转,左侧菜单高亮显示,页面刷新不会改变当前高亮菜单
    Vue知识概括
    JSON.parse() 与 JSON.stringify()
    Bootstrap4 样式笔记
    ES6基础语法
    V-model 双向绑定的原理是什么?
  • 原文地址:https://www.cnblogs.com/zyfadmin/p/8470368.html
Copyright © 2011-2022 走看看