设计模式-外观模式的理解
来源:互联网 发布:单相1.5kw两极数据 编辑:程序博客网 时间:2024/06/08 07:42
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,使得这一子系统更加容易使用。
在机房收费系统中,外观模式用来解除U层和B层之间的耦合,按着以前的做法,在U层中的功能调用B层中的方法的时候,就需要U层完全了解B层中的方法都有哪些,自己的U层又是需要用到哪一个方法,再调用B层中的方法。这样的做法使得B层的东西完全暴露在了U层中,而且增加了U层和B层两者的耦合程度,B层做出的修改要考虑到U层的调用的问题,不利于系统的安全性。增加的外观模式,把B层中的一组方法都放到外观类Façade类中去,当U层需要调用B层的方法的时候,直接通过Façade类,而不用再去完全了解B层中的方法都有哪些是自己用的。这样就定义了U层和B层之间的一个高层接口,为B层中的一组方法提供了一个一致的界面,使得B层的方法更加安全也更加容易使用了。
用通俗的话来讲,外观模式就是归类和嵌套,把B层中的方法都归类放到Façade类中,Façade类自己不用定义方法,都是嵌套的B层中的方法,实现高层接口的功能。当U层需要用的时候,就可以去Façade类里面找到所有的方法名,不需要知道是谁提供的这些方法,也不需要知道这些方法是怎么实现的,直接用Façade类里面的方法名就可以实现自己的功能,这样大大的解除了U层和其他层之间的耦合,使得U层可以专心致志的干自己U层应该干的事,也能提高系统性能,这些好处也是设计模式的优点。
书上的例子:炒股票和基金。没有设计模式的时候的实现过程是这样的:
class Program { static void Main(string[] args) { Stock1 stock1 = new Stock1(); Stock2 stock2 = new Stock2(); stock1.Buy(); stock2.Buy(); stock1.Sell(); stock2.Sell (); Console.Read(); } } class Stock1 { public void Sell() { Console.WriteLine ("股票1卖出"); } public void Buy() { Console.WriteLine("股票1买进"); } } class Stock2 { public void Sell() { Console.WriteLine("股票2卖出"); } public void Buy() { Console.WriteLine("股票2买进"); } }结果是这样的:
而采用外观模式后的代码是这样的:
class Program { static void Main(string[] args) { Facade facade = new Facade(); facade.BuyFacade(); facade.SellFacade(); Console.Read(); } } class Facade { Stock1 stock1; Stock2 stock2; public Facade() { stock1 = new Stock1(); stock2 = new Stock2(); } public void BuyFacade() { stock1.Buy(); stock2.Buy(); } public void SellFacade() { stock1.Sell(); stock2.Sell(); } } class Stock1 { public void Sell() { Console.WriteLine ("股票1卖出"); } public void Buy() { Console.WriteLine("股票1买进"); } } class Stock2 { public void Sell() { Console.WriteLine("股票2卖出"); } public void Buy() { Console.WriteLine("股票2买进"); } }结果同上,这个例子非常简洁,所以我只是用来说明道理,如有不当之处还请谅解。外观类Facade类中的方法的执行时根据自己需要的,如果上例中不想卖,就可以把SellFacade()方法去掉,应用的方法是灵活多变的,自己感悟很重要。
0 0
- 设计模式-外观模式的理解
- 设计模式之外观模式理解
- 简单理解设计模式之外观模式
- 外观模式的简单理解
- 外观模式的简单理解
- 设计模式--外观模式
- 设计模式-外观模式
- 设计模式:外观模式
- 设计模式----外观模式
- 设计模式------外观模式
- 设计模式 外观模式
- 设计模式-【外观模式】
- 设计模式-----外观模式
- 设计模式 - 外观模式
- 设计模式 - 外观模式
- 设计模式- 外观模式
- 设计模式-外观模式
- 设计模式 - 外观模式
- HDU 1874 畅通工程续
- HDU 1548 A strange lift
- 日经社説 20150503 憲法のどこが不備かもっと説明せよ
- KMP算法详解
- 【Hibernate学习之路1】Hibernnate入门
- 设计模式-外观模式的理解
- HDU 2680 Choose the best route
- 《软件定义网络-SDN与OpenFlow解析》第一章
- HDU 2066 一个人的旅行
- STL优先队列详解
- HDU 1385 Minimum Transport Cost
- 欢迎使用CSDN-markdown编辑器
- 【CUDA】初步了解PageLocked host memory的mapped memory功能使用
- 杭电ACM1039——Easier Done Than Said?