LazyLoad Girl On Marriage
2010年7月14日
class Boy { private string _name; private Girl _girl; public Boy(string name,Girl girl) { this._name = name; this._girl = girl; } public void Marriage() { string girl_name = this._girl.GetName(); string boy_name = this._name; this._marriage(boy_name, girl_name); } private void _marriage(string boy_name, string girl_name) { //other codes } } class Girl { private int _id; private string _name=null; public Girl(int id) { this._id = id; } public string GetName() { if(null==this._name) { this._name = this._get_name_from_store(this._id); } return this._name; } private string _get_name_from_store(int id) { string rtn = ""; //other codes return rtn; } }
延迟加载,不是一种设计模式,而是一种思维。当一个对象的若干属性值位于数据库或其他远程存储中,且不会被立即访问时,没有必要一开始创建对象就从远程存储读取,而是在被调用的时候,才进行读取,读取后,可以考虑放入私有变量,作为一个缓存机制,但是需要考虑当后端数据存储更新时,类实例存在脏数据的问题。
延迟加载在某些场合,可以提高系统性能。