设计模式之代理模式(Proxy)
2011-11-25 14:44
260 查看
1.场景
在一个HR(人力资源)应用项目中客户提出,当选择一个部门或是分公司的时候,要把这个部门或者分公司下的所有员工都显示出来,而且不使用分页,方便他们进行业务处理。在显示全部员工的时候, 只需要显示姓名即可,但是也需要提供如下功能:在必要的时候可以选择并查看某位员工的详细信息(user表中的所有字段)。实现起来也非常简单,只需要查询对应deptid下的user表就可以了(这样进行的查询是全表查询,也就是会查询表中的所有字段)。但是实现看似简单,功能也正确,但是蕴涵了一个比较大的问题。那就是,一次性访问的数据条数过多,而且每条描述的数据量又很大,这样操作将会消耗较多的内存。而从用户的角度来说,有很大的随机性。客户有可能访问每一条客户端详细信息,也有可能一条都不访问。也就是说,一次性访问很多条数据,消耗了大量内存,但是消耗的内存很有可能是浪费掉的。客户有可能根本就不会去访问那么多数据,对于每条数据,客户只需要查看姓名而已。
那么该怎么实现,才能既把用户数据的姓名显示出来,而又能节省内存空间?当然还要实现在客户想要看到更多数据的时候,能够正确访问到数据呢?这就是我们接下来要讲的代理模式。
2.解决方案
2.1.代理模式的定义
为其他对象提供一种代理以控制对这个对象的访问。2.2.代理模式的结构和说明
View CodeDROP TABLE IF EXISTS `tbl_dept`; CREATE TABLE `tbl_dept` ( `deptid` varchar(20) NOT NULL DEFAULT '', `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`deptid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of tbl_dept -- ---------------------------- INSERT INTO tbl_dept VALUES ('01', '总公司'); INSERT INTO tbl_dept VALUES ('0101', '一分公司'); INSERT INTO tbl_dept VALUES ('010101', '开发部'); INSERT INTO tbl_dept VALUES ('010102', '测试部'); INSERT INTO tbl_dept VALUES ('0102', '二分公司'); INSERT INTO tbl_dept VALUES ('010201', '开发部'); INSERT INTO tbl_dept VALUES ('010202', '客服部');
代码实例的类图结构如下图所示:
![](http://pic002.cnblogs.com/images/2012/80896/2012041116322861.jpg)
相关文章推荐
- 设计模式学习——代理模式(proxy)
- C++设计模式-Proxy代理模式
- iOS 设计模式之代理模式(Proxy)
- 设计模式学习之代理模式(Proxy,结构型模式)(11)
- Java设计模式——代理模式(Proxy)
- Java设计模式Proxy之动态代理
- Android与设计模式——代理(Proxy)模式
- Proxy Design Pattern 代理设计模式
- 设计模式(6)-代理模式(Proxy)
- 设计模式之代理模式(Proxy)
- 设计模式-结构型-代理模式(Proxy)
- 设计模式读书笔记之代理模式(Proxy)
- 详解设计模式中的proxy代理模式及在Java程序中的实现
- NET常用设计模式——代理(Proxy)模式
- 设计模式(12)-结构型-代理模式(Proxy)
- 巧用代理设计模式(Proxy Design Pattern)改善前端图片加载体验
- java设计模式___Proxy代理模式
- Java设计模式-代理模式(Proxy)
- 设计模式之代理模式(Proxy Pattern)
- 设计模式C++学习笔记之二(Proxy代理模式)