设计模式之 单例模式demo

单例模式(饿汉式/懒汉式demo)
/**
 * 此文用于演示单例设计模式的实现
 * 
 * 分析:
 * 
 * 1、不要任意的在其他类中调用构造方法
 * 
 * 构造方法私有化
 * 2、本类中创建 一个该类的对象
 * 
 * 3、向外暴露此对象
 * 
 * public static 修饰符修饰 该对象
 * 可以通过类名直接调用
 *
 */
public class TestSingle {
    public static void main(String[] args) {

        SingleDemo d = new SingleDemo();
        SingleDemo d2 = new SingleDemo();
        SingleDemo2 sd1 = SingleDemo2.getInstance();

        SingleDemo2 sd2 = SingleDemo2.getInstance();

        System.out.println(sd1==sd2);
    }
}

/**
 * 饿汉式:类一加载 就要创建对象
 * 
 * 【理解】 创建对象 的语句 看成  生活中 做饭、做菜 、吃饭
 */
class SingleDemo{

    private static SingleDemo d = new SingleDemo();
    public static SingleDemo getD() {
        return d;
    }
    private SingleDemo(){

    }
}

/*
 * 懒汉式:
 * 
 * 什么时候必须要创建对象了,才创建
 * 
 * 创建对象的时机为:什么时候调用,什么时候创建
 */
class Single {

    // 构造方法私有化

    private Single() {

    }

    // 声明Single的变量

    private static Single single = null;

    // 提供公共的方法,对外暴露Single对象

    public static Single getInstance() {    

     //同步,如果不为null,则不需要进入同步
    if (single==null) {// 为了提高效率,如果为null才需要进入       

            synchronized (Single.class) {
                if (single == null) {//如果为null,要创建对象
                    single = new Single();
                }
            }
        }

        return single;

    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值