黑马程序员技术交流社区

标题: 什么是单例模式 [打印本页]

作者: 发现的眼睛    时间: 2015-7-13 14:00
标题: 什么是单例模式
关于单例设计模式我不理解这是干什么的,求讲解。


*/
//饿汉式。
/*
class Single
{

作者: 路途    时间: 2015-7-13 14:15
单例设计模式:解决一个类在内存中只存在一个对象。保证唯一性:
        1.先控制禁止其他程序建立该对象。
        2.还为了其他程序可以为访问该类对象,在本类中自定义一个对象。
        3.为了方便其他其程序对自定义对象的访问,可以对外提供一些访问方式。
对应操作:
        1.将构造函数私有化。
        2.在本类中创建一个本类对象(私有并且static)。
        3.提供一个方法可以获取到该类对象。
构造函数私有化:
      私有构造函数只能在函数内部调用,外部不能实例化,所以私有构造函数可以防止该类在外部被实例化。

单例化有两种方式:饿汉式和懒汉式
    饿汉式:先初始化对象 ,A类一进入内存便建立一个对象
        class A {
        private A(){}
            private  static A s = new A();
            public static A getInstance(){
            return s;
        }
    }
    懒汉式:对象是方法调用时,才初始化:
    class A {
        private static A s = null;
        private A(){}
        public static A getInstance(){
            if(s==null)
                s = new A();
            return s;
         }
    }
补充(多线程部分内容):
    单例模式就是为了使用这个对象,那么一般使用饿汉式,且安全。
    单例设计模式中懒汉式:延迟加载。        
在多线程访问是会出现问题,会出现效率低下。使用双重否定来解决(减少锁的判断次数)。
    synchronized  同步。懒汉式加入以后比较慢。
    if(s == null){
        synchronized(A.class){
            if(s == null)
                {
                s = new A();
            }
        }
    }
大体是这样.....
作者: 小丑    时间: 2015-7-13 16:15
设计模式(Design pattern)简单来理解的话,其实就是前人所总结的一些经验和思想,给我们提供了从抽象到具体的方法。
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
作者: 云雀    时间: 2015-7-13 16:31
好像就是不让外界创建对象,而提供一个对象
作者: zhwfa1991    时间: 2015-7-13 16:33
只允许内存中同时只存在一个对象而已
作者: 发现的眼睛    时间: 2015-7-18 16:26
大家回答的都很好
作者: 为了理想而奋斗    时间: 2015-7-18 17:09
又重新脑补了下。谢谢分享
作者: 不怕黑人    时间: 2015-7-18 18:31
回顾一下

作者: wengjialiang    时间: 2015-7-18 19:29
就是这个类只能有自己内部建立的一个对象,外界不能建立,只能调用这个类里面的对象
作者: 落叶随尘    时间: 2015-7-18 19:33
说的都很好    同时也温习了一下

作者: 陈建民1    时间: 2015-7-18 19:40
解释内容很详细,赞一个
作者: 扶摇丶    时间: 2015-7-18 20:39
还没学,看一下




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