C#命令模式

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

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            Start mstart = new Start(0);
            Exit mexit = new Exit(1);
            Pos pos1 = new Pos(1);
            Pos pos2 = new Pos(2);
            Pos pos3 = new Pos(3);
            CylOFF cyloff = new CylOFF(1);
            CylON cylON = new CylON(2);

            Founction mfunc = new Founction();          
            mfunc.command = mstart;
            mfunc.work();
            mfunc.commandList.Add(mstart);
            mfunc.commandList.Add(pos1);
            mfunc.commandList.Add(pos2);
            mfunc.commandList.Add(pos3);
            mfunc.commandList.Add(cyloff);
            mfunc.commandList.Add(cylON);
            mfunc.commandList.Add(mexit);
            mfunc.workList();
            Console.ReadKey();
        }
    }
    class Founction
    {
        public command command;
        public List<command> commandList=new List<command>();
        public void work()
        {
        
            command.Execute( );
        }
        public void workList()
        {
            foreach(var mm in commandList)
                mm.Execute();
        }
    }
    abstract class command
    {
      public  int id = 0;
        public abstract void  Execute();
    }
    class Exit:command
    {
       
        public Exit(int i = 0)
        {
            id = i;
        }
        public override void Execute()
        {
            Console.WriteLine("执行退出"+ id);
        }
    }
    class Start : command
    {
      
        public Start(int i = 0)
        {
            id = i;
        }

        public override void Execute()
        {
            Console.WriteLine("执行开始"+ id);
        }
    }
    class Pos : command
    {

        public Pos(int i = 0)
        {
            id = i;
        }

        public override void Execute()
        {
            Console.WriteLine("运动到位置:" + id);
        }
    }
    class CylON : command
    {

        public CylON(int i = 0)
        {
            id = i;
        }

        public override void Execute()
        {
            Console.WriteLine("气缸打开:" + id);
        }
    }
    class CylOFF : command
    {

        public CylOFF(int i = 0)
        {
            id = i;
        }

        public override void Execute()
        {
            Console.WriteLine("气缸关闭:" + id);
        }
    }


}

在这里插入图片描述
优点:
将具体命令和调用命令分开,完全解耦

缺点:
系统有过多的具体命令

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值