码迷,mamicode.com
首页 > 其他好文 > 详细

行为型模式(二)命令模式

时间:2015-11-28 14:59:41      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

 

一句话的概要

将请求封装成对象,支持请求的变化。实现请求者与执行者的解耦操作。

剧情

小明今天很开心,就决定要请客吃饭。让小刚帮忙给酒店订一下餐。

用命令者设计模式,可以分为三块,小明、酒店订餐、小刚。分别封装成对象,则可以完成解耦。

我们下面用命令者模式来构造以上场景。

任务一:创建小刚这个执行者

我们先要创建小刚这个执行者,并且让他有一个订餐的功能。

public class SomeG
    {
        public void OrderMeal()
        {
            Console.WriteLine("好吧,我去订餐");
        }
    }

任务二:创建酒店订餐这个命令

首先我们先搭建抽象类,然后搭建酒店这个子类

//定义命令抽象类
    public abstract class Command
    {
        protected SomeG _SomeG;

        public Command(SomeG g)
        {
            this._SomeG = g;
        }

        public abstract void Tel();
    }

    //定义酒店
    public class Hotel : Command
    {
        public Hotel(SomeG g) : base(g)
        { }

        public override void Tel()
        {
            base._SomeG.OrderMeal();
        }
    }

将命令的构造函数,设置为必须把执行者传进去。然后定义执行方法。

任务三:创建小明这个命令者

最后我们创建小明这个执行命令的人。

public class SomeM
    {
        private Command _command;

        public SomeM(Command com)
        {
            this._command = com;
        }

        public void Go()
        {
            _command.Tel();
        }
    }

任务四:我们串联整个剧情

private static void Main(string[] args)
        {
            Console.WriteLine("小明让小刚去酒店订餐");
            //定义执行者,小刚
            SomeG g = new SomeG();
            //定义命令,订餐
            Command com = new Hotel(g);
            //定义命令者,小明
            SomeM m = new SomeM(com);
            //执行命令
            m.Go();
            Console.ReadLine();
        }

技术分享

总结

命令模式把操作封装成对象,通过命令的抽象话来达到命令者和执行者的解耦操作。

常用场景:行为的请求者与行为的处理者耦合度过高。

选择关键点:请求者是否不需要关心命令的执行只知道接受者。

行为型模式(二)命令模式

标签:

原文地址:http://www.cnblogs.com/chenxygx/p/5000697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!