java 单例模式书籍_java设计模式之单例模式(Singleton)

Java设计模式之单例模式

单例模式是什么?

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

单例模式如何来设计呢?

保证一个类只能有一个实例,那么我们不能无限制的new 来创建,因为我们知道,new一次就是一个新的对象,那么构造器只能私有化private -- 构造器私有化

构造器私有化了,问题又出现了,构造器私有化了,那么我们怎么来创建唯一的对象呢?-- 提供一个公有的方法/提供一个公有的静态属性

再分析一下,公有方法, 实例方法还是类方法呢?--公有的类方法(获取类实例)

依据以上的推测设计我们可以得出单例类的大致结构:

public class Singleton {

//第一:构造器私有化

private Singleton(){}

//第二:可能1.提供一个共有的类方法

public static Singleton getInstance(){

return null;// 这儿先返回null 让方法编译通过

}

//第二:可能2. 静态属性

public static Singleton instance;//但是问题是这儿怎么给instance赋值呢???????

}

现在又出现了一个问题,我们的这个类的唯一实例如何获取?

直接在getInstance() 中new Singleton()    -- 不行哎,调用一次方法重新创建了一个新的对象

大家在想想,我们上面是不是有一个静态属性啊,静态属性只是在类加载的时候初始化的,而且只是在类加载时初始化的。

ok,那么我们就可以设计出单例模式了,根据我们设计出来的可以有两种简单不同的获取对象的方式,一些文人雅士把这两种获取对象的方式分别叫做  饱汉式 和饿汉式。

package com.jsd.jsd1404.design;

public class Singleton {

private static Singleton instance;

public static Singleton getInstance(){

if(instance==null){

synchronized (Singleton.class) {

instance=new Singleton();

}

}

return instance;

}

private Singleton(){

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值