存档

‘Code Life’ 分类的存档

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;
        }
    }

延迟加载,不是一种设计模式,而是一种思维。当一个对象的若干属性值位于数据库或其他远程存储中,且不会被立即访问时,没有必要一开始创建对象就从远程存储读取,而是在被调用的时候,才进行读取,读取后,可以考虑放入私有变量,作为一个缓存机制,但是需要考虑当后端数据存储更新时,类实例存在脏数据的问题。
延迟加载在某些场合,可以提高系统性能。

Code Life

Singleton.Lover

2009年12月1日
    class Lover
    {
        private static Lover _instance;
        private static readonly object _locker = new object();
        public static Lover getInstance()
        {
            if (null == Lover._instance)
            {
                lock (Lover._locker)
                {
                    if (null == Lover._instance)
                    {
                        Lover._instance = new Lover();
                    }
                }
            }
 
            return Lover._instance;
        }
    }

单例模式(单件模式、Singleton)是一种为方便管理类的实例的数量的设计模式,属于建造型模式。当然,这个数量一般是1。单例模式可以使得在生存期内,所有使用类实例的场合,都使用相同的类实例,从而保证在某些应用场景下,所操作的数据是你需要操作的那一份,同时有一个副作用的方便就是不再需要记住所使用的是哪个类实例。


顺便发一个小笑话:

如何加一个条件让查询:

SELECT * FROM 女人 WHERE will_love_me=true

不返回空记录集呢

答案是…

SELECT * FROM 女人 WHERE will_love_me=true OR 1=1

好吧,这很冷。。。

QQREADER0EAE6F8FD43BDC7F

Code Life