第十六章 外观模式
意图
外观定义了一个将子系统的一组接口集成在一起的高层接口,以提供一个一致的界面。通过这个界面,其他系统可以方便的调用系统中的功能,而忽略子系统内部的变化的发生。
使用场合
1.为一个比较复杂的子系统提供一个简单的接口。
2.将客户程序与子系统的实现部分分离,提高子系统的独立性和可移植性。
3.简化子系统间的依赖关系。
结构
分层结构与外观模式
分层体系结构是一个时髦的话题。理论上讲,分层结构可以使系统更为清晰,更具可维护性。然而在实践中,如果层次划分不合理,就会产生数据和功能的冗余。
分层的划分按功能进行,而数据是在层次之间的传递。
采用外观模式可以使层次之间的界限清晰,便于进行工作和系统调试。
封装子系统
系统升级时,经常是一个大系统的若干子系统分别升级。这时需要封装遗留的子系统,以对外提供一个简单的接口。这种封装可以减少子系统的变化对与接口的系统的影响,只要接口不发生变化,子系统即可以作为孤立的模块升级。
子系统隔离
升级与整合一个包函多个子系统的信息系统时,需要隔离这些子系统,以降低耦合性。隔离后,每个部分可以实现单独的渐进演化,整个系统的实施采用并行的方式进行。由于各子系统只是针对外观模式的界面操作。所以各个子系统的不同版本可以同时协同工作,这样便于系统的动态实施。
系统演化
当渐进演化原有系统时,可以采用外观模式封装原系统。首先开发新系统的表示层,业务逻辑采用原有系统。然后逐步修改各个功能模块,并替换原有系统。
相关模式
当需要创建独立于原有系统的子系统对象时,外观模式经常与抽象工厂一起使用。
外观模式有一点与中介者模式相似,即作为访问字系统的界面。中介者的目的是简化对象间的通信,因此需要集中不属于单个对象的功能,并且通常情况下每个对象都知道中介者的存在;而外观不引入新的功能,自系统也不知道外观的存在。
意图
外观定义了一个将子系统的一组接口集成在一起的高层接口,以提供一个一致的界面。通过这个界面,其他系统可以方便的调用系统中的功能,而忽略子系统内部的变化的发生。
使用场合
1.为一个比较复杂的子系统提供一个简单的接口。
2.将客户程序与子系统的实现部分分离,提高子系统的独立性和可移植性。
3.简化子系统间的依赖关系。
结构
效果
外观模式为用户提供使用了子系统组件的简化接口,使用户减少了处理对象的数目,并且使子系统实用简单。
使用外观模式使子系统合客户端之间实现松耦合关系,由于客户段针对其接口编程,因此子系统得变化不会印象客户端的变化,即有益于分层的体系结构的实现。
数据库访问类中的外观模式
分层结构与外观模式
分层体系结构是一个时髦的话题。理论上讲,分层结构可以使系统更为清晰,更具可维护性。然而在实践中,如果层次划分不合理,就会产生数据和功能的冗余。
分层的划分按功能进行,而数据是在层次之间的传递。
采用外观模式可以使层次之间的界限清晰,便于进行工作和系统调试。
封装子系统
系统升级时,经常是一个大系统的若干子系统分别升级。这时需要封装遗留的子系统,以对外提供一个简单的接口。这种封装可以减少子系统的变化对与接口的系统的影响,只要接口不发生变化,子系统即可以作为孤立的模块升级。
子系统隔离
升级与整合一个包函多个子系统的信息系统时,需要隔离这些子系统,以降低耦合性。隔离后,每个部分可以实现单独的渐进演化,整个系统的实施采用并行的方式进行。由于各子系统只是针对外观模式的界面操作。所以各个子系统的不同版本可以同时协同工作,这样便于系统的动态实施。
系统演化
当渐进演化原有系统时,可以采用外观模式封装原系统。首先开发新系统的表示层,业务逻辑采用原有系统。然后逐步修改各个功能模块,并替换原有系统。
相关模式
当需要创建独立于原有系统的子系统对象时,外观模式经常与抽象工厂一起使用。
外观模式有一点与中介者模式相似,即作为访问字系统的界面。中介者的目的是简化对象间的通信,因此需要集中不属于单个对象的功能,并且通常情况下每个对象都知道中介者的存在;而外观不引入新的功能,自系统也不知道外观的存在。