外观模式—Head First设计模式

“麻雀虽小,五脏俱全”,我觉得这句话可以很好的解释今天要讲的外观模式,从表面上看,你只看到了一个小小的麻雀,他简洁到以至于你感觉麻雀里面没什么东西,而实际上呢,麻雀小小的外表之下却“五脏六腑俱全”,就是说有些东西表面看上去很简洁,他里面包含的东西确实很多的,这个外观模式也是如此定义的,以期望给用户提供一个可以简单访问的简化内部系统的接口

如果上面的例子还不够鲜明,那不妨这样说:《Tom & Jerry》中有这样一个片段,当无脸房主太太交代了几句话给Tom之后就要上街买菜去了,这个时候,饱经这个老太太欺压的Tom就要显露真我了,他当然要好好在家里面Happy一下了,终于不用受老太婆的气了!!!先打个电话把狐朋狗友们都喊到家里面痛快一下,然后在小唱片机,把那个《香水有毒》的碟放上,把探针压在碟上,打开窗帘,喊对面的小母猫来家里玩啊!!!然后可能还要打开冰箱冰上几瓶好酒。对,还得拉上窗帘以防老太婆回来一眼就看到,这样还可以给自己留一点活命的时间(PS:小时候爸妈没回家这么浪的盆友相信是深有体会)

好了,扯远了,回到正题上,Tom这可是冒着生命危险Happy,啊,要是能给Tom一个可以一下子就完成一切操作的“按钮”就好了(这样就可以剩下大批时间玩,并且老太婆回来的时候再也不用担心一命呜呼了!)

我们用Facade表示外观,不妨让这个类拥有冰箱,窗帘,电话机…作为它的成员变量,并且在这个类中提供一个party的方法,只要一调用这个方法,就会按照“先打个电话把狐朋狗友们都喊到家里面痛快一下,然后在小唱片机,…”这样的顺序有条不紊的自动初始化好一个开趴的环境,当远远的看见老太婆回家的时候把狐朋狗友从窗户往外面一扔,在调用一个disparty方法,就可以把家里面恢复成老太婆走的时候的样子,要是不幸被老太婆看到了也打死不承认!!!

好主意!实际上这就是外观模式,用户只需要看到留给他的简化过后的接口(上述的party(),disparty()两个方法),就可以完成对复杂子系统的操作(打电话,开冰箱…)当然!如果我们的方法中没有封装电灯对象,而Tom此时想要开个灯调个情也是可以的,就是说Tom可以使用我们在更高层次上封装好的功能,也可以使用具体的一个子系统中的一个组件的功能。这样,复杂子系统就变得简单使用,而且还保持对原有复杂接口的使用权限。

外观模式:外观模式定义了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

那么你有没有想过,为什么外观模式能让我们更容易的使用子系统呢?其实深层上外观模式涉及了一个OO涉及原则:最少知识原则:之和你的密友谈话,,比如说老师跟班长说去!通知大家明天早上开班会,而消息扩散是通过口口相传的方式,只告诉自己认识的同学,那如果班长认识全班同学,(有很多知识),那他就要说无数次这件事,而假设每个人都认识班上的三个人,三个人又认识更多的三个人,那班长只需要将消息告诉它的密友(最少知识),不一会消息就像病毒一样传播开了!!!!!

这里再简单说一下,如何不要赢得太多的朋友和影响太多的对象在纯光绪中要注意的事项:我们应该之调用属于一下范围的方法:
1.该对象本身的。(自己的方法)
2.被当作方法参数传进来的对象的方法。(参数的方法)
3.此方法创建或实例化的任何对象的方法。(自己所创建对象的方法)
4.对象的任何组件的方法。(成员变量的方法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值