门面模式Fa?ade
前言:
今天看servlet一篇博客时,老是提到Fa?ade这玩意儿,本来想以后有时间看看设计模式的,结果经常出现就不好了,严重影响了对servlet的学习。所以就提前先了解了一下Fa?ade这个模式。
简介:
首先,官方定义为:privide a unified interface to a set of interfaces in a subsystem. Fa?ade defines a higher-level interface that makes the subsystem easier to use.(为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。)
看到这个定义首先想到了必须是spring,个人觉得spring是最大限度的使用这个模式,spring中最最核心是什么? 那就是解决了所有类相互调用的复杂性,将对象之间的互相调用放到配置文件中了,无疑这个配置文件就是一个Fa?ade,也就是定义中所说的高层接口。存属个人感觉,说的可能有点牵强了。O(∩_∩)O~ 下面是是该模式的概念图。
图可以参见:附件!
这个模式原理并不难。下面谈谈:
何时用这个模式?
一般可以分为三个阶段:
首先在设计的初期,应该有意识的将不同两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层,业务逻辑层和表示层的层与层之间建立外观Fa?ade,这样可以为复杂的子系统提供一个简单的借口,使得耦合打打降低。
其次,在开发阶段,子系统往往因为不断的重构而变得越来越复杂,大多数模式也会产生很多很多的小类,这本是好事,但是也给外部调用它们的外部程序带来了使用上的困难,增加外观Fa?ade可以提供一个简单的借口,减少它们之间的依赖。
第三,在维护一个遗留的系统时,可能这个系统已经非常难以维护和扩展了,但因为它包含非常重要的功能,新的需求开发必须要用到它。此时用外观模式Fa?ade也是非常合适的。可以为新系统开发一个外观Fa?ade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Fa?ade对象交互,Fa?ade与遗留代码交互所有复杂的工作。
代码实现:
例子一:
股民炒股代码
具体的股票类 :
Static void main(){Fund jijin=new fund(); //此时,很显然用户就不需要了解股票,买基金后就ok了Jijin.buyfund();Jijin.sellfund();}