黑马程序员技术交流社区

标题: 关于单例设计模式 [打印本页]

作者: 想做开发    时间: 2014-7-20 20:08
标题: 关于单例设计模式
能不能谈一下你们关于单例设计模式的理解,天气热,看得晕晕乎乎的。。。

作者: caiyaoren    时间: 2014-7-20 20:42
方法中只能有一个对象       采取措施来确保这种行为
作者: java—family    时间: 2014-7-20 21:28
单例设计模式的根本原因是  保证 这个类在内存中是唯一的。根本原因是要节省内存。
怎么保证是唯一的呢?三个步骤
1 。私有化构造函数。你把构造函数私有化了 。其他类访问部到构造函数,就不能创建对象
2 ,在本类中创建一个自己的对象。(要用private 私有化对象)
3.  定一个方法,返回自己的对象
个人的理解,不对的体谅哈。
作者: 想做开发    时间: 2014-7-20 21:29
java—family 发表于 2014-7-20 21:28
单例设计模式的根本原因是  保证 这个类在内存中是唯一的。根本原因是要节省内存。
怎么保证是唯一的呢?三 ...

多谢哈  
作者: hejinzhong    时间: 2014-7-20 21:34
其实你在看视频的时候多去想知识点之间的联系,如果前面都知道了,单例模式很容易知道,每步为啥那么做。当不懂的时候,可以去翻看前面的视频。也可以带着问题继续看,当你把一些知识串起来,自然就OK
作者: 想做开发    时间: 2014-7-20 21:39
hejinzhong 发表于 2014-7-20 21:34
其实你在看视频的时候多去想知识点之间的联系,如果前面都知道了,单例模式很容易知道,每步为啥那么做。当 ...

恩恩  看视频看得有点混乱   谢谢哈
作者: wubing    时间: 2014-7-20 22:24
最近刚学完单例设计模式
public class SingleDemo {
        Single s = Single.getInstance();
        Single s1 = Single1.getInstance();

}

/*
* 单例设计模式 饿汉式写法
*/
class Single {
        private Single() {
        }

        private static final Single s = new Single();

        public static Single getInstance() {
                return s;
        }
}

/*
* 单例设计模式 懒汉式写法
*/
class Single1 {
        private Single1() {
        }

        private static Single1 s = null;

        public static Single1 getInstance() {
                if (s == null)
                        s = new Single1();
                return s;

        }

}



作者: J.twt    时间: 2014-7-20 23:05
保证对象唯一性,开发用饿汉式,面试用懒汉式,因为你涉及到线程和锁的问题
作者: 慕杰    时间: 2014-7-20 23:31
这个你先别看什么代码啊什么的,先从字面上理解,单例模式顾名思义就是这个类不管怎样只能有一个实例即对象,怎么样让所有调用者拿到的都是一个对象呢?1、首先在这个类里面设计个该类类型的私有静态成员变量instance;什么作用呢?当然是让类加载的时候就在方法区里面存在的变量,随着类的消失而消失,这样调用类拿到的就始终是这一个变量;2、有个私有的构造器,为什么呢?因为不希望外界通过new constructor()的方式创建对象,这样创建出来的对象肯定不是唯一一个,因为堆地址不同;3、不让访问成员变量,还不让访问构造器,那怎么获取对象呢?当然是给外部提供公共的访问方式,然后返回那个成员变量了,那就是getInstance()方法;又因为该类不能创建对象,所以不能用对象调用该获取单例的方法,改为static的用类直接调用即可,这样就实现了单例模式;至于饥饿类型单例模式,其实就是他这个类饿啊,想吃东西,怎么办呢?就是让成员变量声明时就创建一个对象,然后getInstance直接返回就行;           懒汉模式就是:这人很懒,总是拖拖拉拉的,非得老板什么时候要成果的时候再去做这件事,所以一开始先不做创建对象的操作,等类调用的时候再通过getInstance返回对象。我的理解大致就是这样,听不明白再回复我。。
作者: Adjin    时间: 2014-7-21 09:41
不让外界建立对象
向外提供一个对象




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