A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冷叙辰 中级黑马   /  2013-3-12 16:51  /  1422 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冷叙辰 于 2013-3-12 17:57 编辑

单例模式分为饿汉式和懒汉式,我想知道他们有什么分别,以及那种比较好?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
饿汉式

   对象预先加载,线程是安全的,在类创建好的同时对象生成,调用获得对象实例的方法反应速度快,代码简练。

懒汉式:

   对象延迟加载,效率高,只有在使用的时候才实例化对象,但若设计不当线程会不安全,代码相对于饿汉式复杂,第一次加载类对象的时候反应不快。




评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
区别就是你是在getInstance的方法里还是方法外面实例化对象
比如
饿汉式
class Animal {
        private Animal animal = new Animal();

        private Animal() {
        }

        Animal getInstance() {
                return animal;
        }
}
懒汉式
class Animal {
        private Animal animal = null;

        private Animal() {
        }

        Animal getInstance() {
                animal = new Animal();
                return animal;
        }
}
个人感觉懒汉式比较好 ,毕竟是在方法里面实例化的 可以确保对外的是唯一的对象

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
饿汉式:在于,当你加载类的时候,管你用还是不用,都会先在内存中创建一个对象,方便以后使用。
懒汉式:在于,当你使用的时候,你去调用话,假如该对象存在于内存,那么就直接调用,否则就创建一个,保存在内存,方便以后使用。(可以理解成延迟加载,用的时候才创建。)

懒汉模式,对于大系统而言是最好的,能节约资源。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马