首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

小弟我的设计模式-单例模式

2012-10-20 
我的设计模式--单例模式这个来说,相对简单一点,就是要求定义的这个角色是独一无二的。还是拿电影来说吧,一

我的设计模式--单例模式
这个来说,相对简单一点,就是要求定义的这个角色是独一无二的。

还是拿电影来说吧,一部电影可能有多个摄像、场记、演员。但是,导演只会有一个。那么这个导演就是单例的。

下面来看我们怎么让这个导演是独一无二的。

public class Director
{
        //导演的妈妈已经生了一个导演了,所以不能再出现了一个导演了
        private Director()
        {
       
        }
       
        //这个时刻就是导演出生了
        private static Director instance = new Director();
       
        //要让导演出场拍电影了,不能老是待着不干活,制片人会有意见的
        public static Director getInstance()
        {
                return instance;
        }
}

是不是感觉很简单呢,当然我们这里做的是懒汉式的单例,直接把导演给出生了,不管这个导演会不会接到制片人或出品人给的单子,让他拍电影。
如果我们想等这个导演接到片子了再出生,那该怎么办呢?这里就要把导演变成一个勤劳的人了。

public class Director
{
        //导演的妈妈已经生了一个导演了,所以不能再出现了一个导演了
        private Director()
        {
       
        }
       
        //这个时刻就是导演出生了
        private static Director instance = null;

        private Lock lock;

        //要让导演出场拍电影了,不能老是待着不干活,制片人会有意见的
        public static Director getInstance()
        {
                //锁住,如果同时两个制片人找导演,那不是出来两个导演了,那这世界不乱套了。所以,关键的地方。
                lock.lock();
                if (null == instance)
                {
                        instance = new Director();
                }
                lock.unLock();
                //导演生完了,那么就放开他吧,看起来有点邪恶。哈哈
                return instance;
        }
}

热点排行