黑马程序员技术交流社区

标题: 单例模式的问题 [打印本页]

作者: 冷叙辰    时间: 2013-3-12 16:51
标题: 单例模式的问题
本帖最后由 冷叙辰 于 2013-3-12 17:57 编辑

单例模式分为饿汉式和懒汉式,我想知道他们有什么分别,以及那种比较好?
作者: 李洪因    时间: 2013-3-12 16:59
饿汉式

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

懒汉式:

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





作者: HM李帅    时间: 2013-3-12 17:01
区别就是你是在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;
        }
}
个人感觉懒汉式比较好 ,毕竟是在方法里面实例化的 可以确保对外的是唯一的对象
作者: 沉默de羔羊    时间: 2013-3-12 17:10
饿汉式:在于,当你加载类的时候,管你用还是不用,都会先在内存中创建一个对象,方便以后使用。
懒汉式:在于,当你使用的时候,你去调用话,假如该对象存在于内存,那么就直接调用,否则就创建一个,保存在内存,方便以后使用。(可以理解成延迟加载,用的时候才创建。)

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2