【设计模式学习笔记】Facade

来源:互联网 发布:mysql官方文档中文版 编辑:程序博客网 时间:2024/05/18 17:03

通常Facade有译作“外观”和“门面”的两种。个人认为译作“门面”虽然显得不是那么“雅”,却比较形象。

Facade模式的核心思想是将接口集中地发布,并隐藏不必要的接口,以达到更好的封装效果。它体现的设计原则中的“高内聚”


我们可以设想以下情景:

一个高度自动化生产的工厂,厂房中分布着各种不同的生产设备。但作为工厂的负责人,我不希望工人们可以随意地操作这些设备,因为我的工人们并不是工程师,对这些设备并不很了解,而我又付不起专业人员高昂的薪水。我应该如何解决这个问题呢?


我会建一间中控室,通过复杂的布线过程将所有设备连接到中控室中,同时封闭所有设备的开关,使得这些设备只能通过中控室的操作面板进行控制。而中控室的操作面板是定制好的,通过面板上的操作不会对机器造成任何损伤,也不会破坏生产的流程,生产工作会保持稳定有序地运行。

这个中控室就是所谓的“门面”。


在我们进行面向对象程序设计的过程中,一个功能模块可能由很多类组成,它们之间协同工作,互相依赖,通过相当多的复杂逻辑进行组合,实现了一个功能。在这个过程中是没有必要让外界介入的——来自外部的干扰不仅对过程没有任何好处,还可能造成错误。


Facade很简单,也很实用。不过为了更好的实现,还是有些问题需要注意:

1. internal关键字的使用(C#)

2. 多层Facade的嵌套

3. 如何在接口简化和接口调用的灵活性之间作权衡。

原创粉丝点击