门面模式(Facade)解析
2015-08-07 19:27
260 查看
门面模式使用一个门面类来包装一些复杂的类,对外提供一个简单的访问方法。
见如下代码:
HibernateTemplate类也是一个典型的门面类,它是SessionFactory、Session、Query等类的门面,当客户端程序需要进行持久化查询时,程序无需调用这些类,而是直接调用HibernateTemplate门面类的方法即可。
此外,J2EE应用里业务逻辑组件来封装DAO组件也是典型的门面模式。每个业务逻辑组件都是众多DAO组件的门面,系统的控制器类无需直接访问DAO组件,而只需与业务逻辑组件交互即可。
见如下代码:
class CPU { public void startup() { System.out.println("cpu startup!"); } public void shutdown() { System.out.println("cpu shutdown!"); } } class Memory { public void startup() { System.out.println("memory startup!"); } public void shutdown() { System.out.println("memory shutdown!"); } } class Disk { public void startup() { System.out.println("disk startup!"); } public void shutdown() { System.out.println("disk shutdown!"); } } //门面类 class Computer { private CPU cpu; private Memory memory; private Disk disk; public Computer() { cpu = new CPU(); memory = new Memory(); disk = new Disk(); } public void startup() { System.out.println("start the computer!"); cpu.startup(); memory.startup(); disk.startup(); System.out.println("start computer finished!"); } public void shutdown() { System.out.println("begin to close the computer!"); cpu.shutdown(); memory.shutdown(); disk.shutdown(); System.out.println("computer closed!"); } } public class User { public static void main(String[] args) { Computer computer = new Computer(); computer.startup(); computer.shutdown(); } }代码中Computer类就是一个门面类,可以通过它的方法来调用另三个类的方法,而不用一一调用。
HibernateTemplate类也是一个典型的门面类,它是SessionFactory、Session、Query等类的门面,当客户端程序需要进行持久化查询时,程序无需调用这些类,而是直接调用HibernateTemplate门面类的方法即可。
此外,J2EE应用里业务逻辑组件来封装DAO组件也是典型的门面模式。每个业务逻辑组件都是众多DAO组件的门面,系统的控制器类无需直接访问DAO组件,而只需与业务逻辑组件交互即可。
相关文章推荐
- POJ-2752-Seek the Name, Seek the Fame
- android 设置全屏,窗口透明度,待机设置,主题设置总结
- Objective-C文章中的生词
- hdu 5340 Three Palindromes
- C++(13)STL实践与分析之再谈String类型
- 简单工程模式--计算机
- 【CF245H】【Queries for Number of Palindromes】
- POJ-2196 Specialized Four-Digit Numbers-10,12,16进制的各个位数相加彼此相等的数
- JavaScript——实现时间的动态显示
- B. ZgukistringZ-简单字符串处理-Codeforces Round #307 (Div. 2)
- MySQL使用说明
- 在Linux中创建静态库.a和动态库.so
- 熟人Dubbo 系列1-Dubbo什么
- 在windows 、linux下读取目录下所有文件名
- hdu 5363 Key Set(水)
- javascriptcore.framework学习.
- hdu 5361 In Touch(最短路+并查集)
- 杭电acm 2139 Calculate the formula
- Java IO流--IO包中的其他类
- 【bzoj2141】 排队 树状数组+主席树