步骤
1)单利模式 防止其他类中new,所以private修饰
2)类中创建对象----但是要在静态代码块中创建
3)对外提供一个静态方法来创建对象【这一步要使用懒加载】
优点
解决了线程不安全问题 。
缺点
每次调用方法都会同步,降低了效率。【这个也没用,看看就好。】
代码实现
(只在公共方法上加了一个同步关键字 synchronized)
package yuan.com.dp.singleton;
/**
* 测试类
*/
class Test_SingleTon_4 {
public static void main(String[] args) {
SingleTon_4 ton_1 = SingleTon_4.getSingleTon_4();
SingleTon_4 ton_2 = SingleTon_4.getSingleTon_4();
System.out.println(ton_1 == ton_2);
}
}
/**
* 单利模式-懒汉式-同步方法
*/
public class SingleTon_4 {
/**
* 1.单利模式 防止其他类中new,所以private修饰
*/
private SingleTon_4() {
}
/**
* 2.类中创建私有对象
*/
private static SingleTon_4 singleTon_4 = null;
/**
* 3.对外提供一个静态方法来创建对象
*
* @return singleTon_4实例
* 相较于前一版多加了个synchronized
*/
public synchronized static SingleTon_4 getSingleTon_4() {
//这里是精华,使用到了懒加载,其实优化代码就是尽量懒加载,不过懒加载也要视情况而定。
if (singleTon_4 == null) {
singleTon_4 = new SingleTon_4();
}
return singleTon_4;
}
}
网友评论