java学习之单例模式(饿汉式与懒汉式)

---恢复内容开始---

设计模式:解决某一类问题最行之有效的方法 java中有23种设计模式 今天学习其中一种:单例设计模式:解决一个类在内存只存在一个对象

 

想要保证对象唯一。

1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象

2.还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象

3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式

 

这三部分用代码体现:

1.将构造函数私有化

2.在类中创建一个本类对象

3.提供一个方法可以获取到该对象

package com.dreamly.day02;

/**
 * @author dreamly
 *
 */
public class SingleDemo {

    /**
     * 原则:定义单例,建议使用饿汉式,懒汉式在并发时容易出现实例化混乱的问题,只有加锁和多线程双重判断才能解决问题,相比饿汉式,代码量长了判断多了而且费时费力
     * 
     */
    public static void main(String[] args) {
        Single s1=Single.getInstance();
        Single s2=Single.getInstance();
        System.out.println(s1==s2);
    }
}
/*
 * 这个是先初始化对象
 * 称为:饿汉式
 * Single类一进入内存,就已经创建好了对象
/*
 class Single{
    private Single() {}
    private static Single s=new Single();
    public static Single getInstance() {
        return s;
    }
}
*/
/*
 * 对象是在方法被调用时,才初始化,又叫对象的延时加载
 * 称为:懒汉式
 * Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象
 */
class Single{
    private static Single s=null;
    private Single() {};
    public static Single getInstance() {
        if(s==null) {
            synchronized (Single.class) {
                if(s==null) {
                    s=new Single();
                }
            }
        }
        return s;
    }
}

 

---恢复内容结束---

posted @ 2017-12-13 17:27  dreamy_java  阅读(161)  评论(0编辑  收藏  举报