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

结构型模式(五)外观模式

时间:2015-11-22 23:19:32      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

 

一句话的概要

外观模式提供了一个统一接口,并且包装了各个子接口。用户只要调用外观类的接口就可以,剩下的操作由外观类进行。

剧情

女神跟小明同学,出去逛街。女神对小明说,我要吃肯德基。你马上给我去买回来。

但是小明同学,人生地不熟,得先找附近哪里有,然后去买,最后回来给女神吃。

那么我们把小明同学的这一系列操作。可以都规划到女神说,我要吃肯德基,这一个方法里头。

我们用外观模式来构造以上的剧情

任务一:构造查询肯德基和买肯德基这两个子方法

public class LookKFC
    {
        public bool Look()
        {
            Console.WriteLine("正在查询最接近的KFC");
            return true;
        }        
    }

    public class BuyKFC
    {
        public bool Buy()
        {
            Console.WriteLine("去最近的KFC,进行购买");
            return true;
        }
    }

代码很简单,不多说

任务二:构造小吃肯德基的外观类

public class EatKFC
    {
        private LookKFC lookKfc;
        private BuyKFC buyKfc;
        public EatKFC() {
            lookKfc = new LookKFC();
            buyKfc = new BuyKFC();
        }
        public void Eat() {
            if (lookKfc.Look())
            {
                if (buyKfc.Buy())
                {
                    Console.WriteLine("买完肯德基了,我们可以吃了");
                }
            }
            else
            {
                Console.WriteLine("不好意思,附近没有肯德基");
            }
        }
    }

定义了两个子类,然后构造函数初始化这两个子类。外观类发布了吃这个接口,接口里面对子类进行调用操作。

任务三:执行外观类

 static void Main(string[] args)
        {
            EatKFC eat = new EatKFC();
            eat.Eat();
            Console.Read();
        }

这里只要调用吃这个方法,就会进行一系列的操作。

总结

我们把子类的操作,封装到一个外观类,并且发送一个调用接口。

常用场景:一个子系统需要对外提供服务

选择关键点:子系统对外提供服务是否需要很多类

结构型模式(五)外观模式

标签:

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

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