C# 设计模式 行为型模式 之 命令模式

命令模式 是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

总结:命令工厂 负责 添加命令(对象)  执行命令(对象)或批量执行命令(对象)

优点: 1、降低了系统耦合度。 2、新的命令可以很容易添加到系统中去。

下面以 代码形式 展示 命令模式

namespace 命令模式
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Stock stock = new Stock();
            BuyStock buyStock = new BuyStock(stock);
            SellStock sellStock = new SellStock(stock);
            StockOrder stockOrder = new StockOrder();
            stockOrder.AddOrder(buyStock);
            stockOrder.AddOrder(sellStock);
            stockOrder.PrintOrder();
            /*
             * 控制台 输出
             * 以156买入APPLE INC股票
                以156卖出APPLE INC股票
             */
        }
    }
    //一条 命令接口
    public interface Order
    {
        void Movement();
    }
    // 业务
    public class Stock
    {
        private string StockName = "APPLE INC";
        private int StockPrice = 156;
        public void Buy()
        {
            Console.WriteLine($"以{StockPrice}买入{StockName}股票");
        }
        public void Sell()
        {
            Console.WriteLine($"以{StockPrice}卖出{StockName}股票");
        }
    }
    // 分离业务
    public class BuyStock : Order
    {
        private Stock stock;
        public BuyStock(Stock stock)
        {
            this.stock = stock;
        }
        public void Movement()
        {
            stock.Buy();
        }
    }
    // 分离业务
    public class SellStock : Order
    {
        private Stock stock;
        public SellStock(Stock stock)
        {
            this.stock = stock;
        }
        public void Movement()
        {
            stock.Sell();
        }
    }
    // 使用 命令模式
    public class StockOrder
    {
        private List<Order> orders = new List<Order>();
        //添加命令
        public void AddOrder(Order order)
        {
            orders.Add(order);
        }
        //执行命令
        public void PrintOrder()
        {
            foreach (Order order in orders)
            {
                order.Movement();
            }
            //命令 执行完  释放
            orders.Clear();
        }
    }
}

缺点:使用命令模式可能会导致某些系统有过多的具体命令类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值