码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-12-13 20:37:39      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:饿汉   span   内容   访问   定义   pos   day   ==   int   

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

设计模式:解决某一类问题最行之有效的方法 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;
    }
}

 

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

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

标签:饿汉   span   内容   访问   定义   pos   day   ==   int   

原文地址:http://www.cnblogs.com/zhaohuan1996/p/8034020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!