《设计模式解析》 第6章 Facade模式 复习题

《设计模式解析》 第6章 Facade模式 复习题

 

简答题

1.  给出Facade 的定义。

a)   为了隐藏系统内部的复杂性,而提供了一个包含部分功能的、简洁的接口,并提供一个实现该接口的一个一致界面供用户使用。

2.  Facade 模式的意图是什么?

a)   屏蔽系统内部的复杂性,减少相互依赖关系。使得用户更容易使用。

3.  Facade 模式的效果是什么?举出一个例子。

a)   当用户使用时,只需要访问Facade层的方法,而无需知道系统内部是如何运作的,方便客户的使用。

b)   例子:网页开发时,在业务逻辑代码的上层添加一个Facade层,供界面调用,这样,界面开发者仅需要调用Facade层的相关方法,而无需理会具体业务逻辑,能够专注于界面的开发。

4.  在Facade 模式中,客户是如何使用子系统的?

a)   实例化一个Facade对象,调用Facade中的相关方法进行操作。

5.  Facade 模式通常能够提供对整个系统的访问吗?

a)   Facade模式是为了简化直接操作系统的一些繁琐的操作而存在的,一般是给普通用户调用。他提供的仅是一个高层接口,而系统中没有任何对facade的引用,因此他并不屏蔽整个系统,如果开发人员需要直接调用系统内部的方法,也是可行的。

阐述题

1. 《设计模式》一书中说: Facade 模式是要“为子系统中的一组接口

提供一个统一接口。Facade 模式定义了一个更高层的接口,使子系统更加容

易使用。”

● 这是什么意思?通过Facade,用户可以间接对子系统进行访问,并且无需了解系统的具体运作,简化了用户的操作。

● 举出一个例子?同简答题3

2. 有一个来自软件之外的Facade 实例:有些美国加油站的油泵非常复

杂,其上有许多选项,包括如何付款、所用的汽油类型、观看广告等等。给加

油泵提供统一接口的方式之一,就是让加油服务员服务。有些州甚至要求这样。

● 实际生活中还有类似的能够解释Facade的例子吗?

    旅游推荐服务。当我们要去旅游时,需要查询各方面的信息,包括地点、交通工具、住宿、路线等,而旅游推荐服务商为你提供了旅游推荐的服务,只需要告诉他一些基本信息,便会为你制定好最佳的旅游方式。

观点与应用题

1.  如果需要在系统所提供的之外添加功能,还能使用Facade 模式吗?(If you need to add functionality beyond what the system provides,can you still use the Facade pattern?)

a)   一个系统的Facade只应该只提供这个系统的功能调用,而不应该跨系统进行调用,这样会增加系统间的耦合。超出系统功能范围的功能应该由其他系统的Facade提供。可以直接调用另一个系统的功能或者在2个Facade上再添加一个更高层的Facade对这两个Facade进行调用,以实现跨系统功能调用。

2.  为什么要使用Facade 模式封装整个系统?

a)   屏蔽内部复杂性,方便用户调用

b)   不同系统之间的调用若仅通过Facade,可以降低系统间的耦合。

c)   当系统内部变化的时候,外界的调用者不会察觉,因此无需修改。

3. 有什么情况下应该编写一个新系统而不是用Facade 封装老系统吗?如果有,请举出。

    当一个系统的维护成本较高,使用Facade增加一层会严重影响系统效率时,需要一个新系统。

3.  你认为《设计模式》一书中为什么称这个模式为Facade 呢?从它的功能来看这个名字合适吗?解释你的回答。

a)  Facade——外观,是一个事物暴露给外界的部分,外界在外部能够看到这个部分,同时,也能够进入一个部件的内部进行更深层次的研究。从功能来看,并不是特别合适,外观一般是用来观察的,而非进行使用的,Facade并没有显示物体为外界对象提供了哪些服务。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值