企业应用架构模式之延迟加载
延迟加载也是一种对象-关系行为模式,其定义如下:一个对象,它虽然不包含所需要的所有数据,但是知道如何去获取这些数据。
当一个对象的状态,需要从外部获得时,系统就需要从外部(包括数据库,文件系统,网络)加载数据。这时候,要考虑加载一个对象时需要从数据库(或文件)读取多少数据以及数据库调用的次数。这两个方面,前者涉及内存后者涉及速度,都是至关重要的系统性能参数。因此设计者需要使用一些方法来保证系统的这两个性能都是用户可接受的。
延迟加载就是解决方法之一。它的使用时机一般包括:
(1)加载一个对象会引起大量相关对象的加载,如初始化某对象的时候,其中的某些域(属性)需要去连接数据库(或者说连接其他数据库),也就是说某个对象的是从数据库A中获得,但其部分属性需要从其他数据库获得,这时候需要考虑采用延迟加载来减少初始化时连接数据库的次数。
(2)在内存受限的设备上,初始化某对象的时候,其中的某些域会占据很大内存,而这些属性很可能并不是一开始据需要使用到的。这时候可以使用延迟加载来读取部分数据以保节约内存空间。
需要注意的是,延迟加载很可能带来的不是性能的优化。所以使用的时候需要谨慎。
延迟加载的方法:延迟初始化、虚代理、值保持器、重影。
延迟初始化:每次访问对象的时候都检查它是否为空,如果为空就去获取信息创建该对象。