第10章 外观(Facade)模式
外观模式在现实世界中比比皆是,比如你想吃蛋糕,你没有必要去买面粉、鸡蛋、奶油等,然后和面加工烘烤,你只要拿着钱去蛋糕店订做一个就好了;另外,以开机为例,你没必要在打开电源之后,输入一些指令,使CPU开始运行,然后检测内存和硬盘、加载硬盘数据、检测鼠标键盘设备……,只要你按一下开关,操作系统就会为你做完这一切。蛋糕店和操作系统都为我们提供了外观,使我们没必要了解蛋糕是怎样制作的,电脑是按照哪些步骤启动的,我们直接使用它们就可以了。
在软件设计里,如果软件系统和一些子系统有非常繁复的交互,你可能希望减少和它们之间的交互以达到简化的目的,这就使用到了外观模式。外观模式是我们最常使用的设计模式之一,非常直观和简单,读者可能已经在使用了,只不过可能还没有意识到它就是外观模式。
本章我们将讨论外观模式,主要包含如下内容。
介绍外观模式。
引入最少知识原则(Least Knowledge Principle)。
实现一个老板请客的场景。
外观模式在EJB里的使用。
10.1 外观(Facade)模式
一个系统在使用外观模式之前,客户类和子系统的类之间的交互关系如图10-1所示。
图10-1
引入外观类之后,它们之间的交互关系就变为图10-2所示。
图10-2