一句话的概要
外观模式提供了一个统一接口,并且包装了各个子接口。用户只要调用外观类的接口就可以,剩下的操作由外观类进行。
剧情
女神跟小明同学,出去逛街。女神对小明说,我要吃肯德基。你马上给我去买回来。
但是小明同学,人生地不熟,得先找附近哪里有,然后去买,最后回来给女神吃。
那么我们把小明同学的这一系列操作。可以都规划到女神说,我要吃肯德基,这一个方法里头。
我们用外观模式来构造以上的剧情
任务一:构造查询肯德基和买肯德基这两个子方法
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(); }
这里只要调用吃这个方法,就会进行一系列的操作。
总结
我们把子类的操作,封装到一个外观类,并且发送一个调用接口。
常用场景:一个子系统需要对外提供服务
选择关键点:子系统对外提供服务是否需要很多类
时间: 2024-10-27 07:54:40