读书人

研磨设计方式 之 代理模式(Proxy)2

发布时间: 2012-11-15 15:16:14 作者: rapoo

研磨设计模式 之 代理模式(Proxy)2——跟着cc学设计系列

?

11.2? 解决方案

11.2.1? 代理模式来解决

用来解决上述问题的一个合理的解决方案就是代理模式。那么什么是代理模式呢?

(1)代理模式定义

研磨设计方式 之 代理模式(Proxy)2——跟着cc学设计系列?

(2)应用代理模式来解决的思路

仔细分析上面的问题,一次性访问多条数据,这个可能性是很难避免的,是客户的需要。也就是说,要想节省内存,就不能从减少数据条数入手了,那就只能从减少每条数据的数据量上来考虑。

一个基本的思路如下:由于客户访问这多条用户数据的时候,基本上只需要看到用户的姓名,因此可以考虑刚开始从数据库查询返回的用户数据就只有用户编号和用户姓名,当客户想要详细查看某个用户的数据的时候,再次根据用户编号到数据库中获取完整的用户数据。这样一来,就可以在满足客户功能的前提下,大大减少对内存的消耗,只是每次需要重新查询一下数据库,算是一个以时间换空间的策略

可是该如何来表示这个只有用户编号和姓名的对象呢?它还需要实现在必要的时候访问数据库去重新获取完整的用户数据。

代理模式引入一个Proxy对象来解决这个问题,刚开始只有用户编号和姓名的时候,不是一个完整的用户对象,而是一个代理对象,当需要访问完整的用户数据的时候,代理会从数据库中重新获取相应的数据,通常情况下是当客户需要访问除了用户编号和姓名之外的数据的时候,代理才会重新去获取数据。

11.2.2? 模式结构和说明

代理模式的结构如图11.1所示:

?研磨设计方式 之 代理模式(Proxy)2——跟着cc学设计系列

图11.1? 代理模式的结构示意图

Proxy

?????? 代理对象,通常具有如下功能:

读书人网 >软件开发

热点推荐