研磨设计模式 之 代理模式(Proxy)1――跟着cc学设计系列(二)

2014-11-24 03:17:02 · 作者: · 浏览: 1
;

col.add(um);

}

rs.close();

pstmt.close();

}finally{

conn.close();

}

return col;

}

/**

* 获取与数据库的连接

* @return 数据库连接

*/

private Connection getConnection() throws Exception {

Class.forName("你用的数据库对应的JDBC驱动类");

return DriverManager.getConnection(

"连接数据库的URL", "用户名", "密码");

}

}

(3)写个客户端来测试看看,是否能满足功能要求,示例代码如下:

public class Client {

public static void main(String[] args) throws Exception{

UserManager userManager = new UserManager();

Collection col =

userManager.getUserByDepId("0101");

System.out.println(col);

}

}

运行结果如下:

[userId=user0001,name=张三1,depId=010101,sex=男

, userId=user0002,name=张三2,depId=010101,sex=男

, userId=user0003,name=张三3,depId=010102,sex=男

]

你还可以修改getUserByDepId的参数,试试传递不同的参数,然后再看看输出的值,看看是否正确的实现了要求的功能。

11.1.3 有何问题

上面的实现看起来很简单,功能也正确,但是蕴含一个较大的问题,那就是:当一次性访问的数据条数过多,而且每条描述的数据量又很大的话,那会消耗较多的内存。

前面也说了,对于用户表,事实上是有很多字段的,不仅仅是示例的那么几个,再加上不使用翻页,一次性访问的数据就可能会有很多条。如果一次性需要访问的数据较多的话,内存开销会比较大。

但是从客户使用角度来说,有很大的随机性,客户既可能访问每一条数据,也可能一条都不访问。也就是说,一次性访问很多条数据,消耗了大量内存,但是很可能是浪费掉了,客户根本就不会去访问那么多数据,对于每条数据,客户只需要看看姓名而已。

那么该怎么实现,才能既把多条用户数据的姓名显示出来,而又能节省内存空间,当然还要实现在客户想要看到更多数据的时候,能正确访问到数据呢?


---------------------------------------------------------------------------

私塾在线学习网原创内容 跟着cc学设计系列 之 研磨设计模式

研磨设计讨论群【252780326】

原创内容,转载请注明出处【http://sishuok.com/forum/blogPost/list/5261.html

---------------------------------------------------------------------------