单列设计模式
3、单例设计模式
-
设计模式介绍:
-
在软件开发中经常会遇到一些问题,这些问题如何解决,前人总结了一些好的方法,这些方法就称之为设计模式。
-
用设计模式去解决这些问题,可以使代码的安全性、重用性、扩展性更强。
-
简单来说:就是一套好的编码风格,前人总结出的一种套路
-
-
单例设计模式介绍:
-
保证类的对象在内存中,只有一个对象
-
举例:
-
Windows任务管理器
-
回收站
-
网站的计数器对象
-
-
饿汉式 :
-
私有化构造方法
-
定义一个 public static final 修饰的常量,常量值就是对象
-
在外界直接调用这个常量
写法一:
-
私有化构造方法
-
定义一个 public static final 修饰的常量,常量值就是对象
-
在外界直接调用这个常量即可
public class Single {
//1.私有化构造方法 --- 不让别人创建对象
private Single(){}
// 非常饿, 上来就要吃, 上来不看任何条件, 直接创建对象
//2.在本类中,自己创建对象
public static final Single s = new Single();
}
写法二:
-
私有化构造方法
-
定义一个 private static final 修饰的常量,常量值就是对象
-
再定义一个getInstance方法
-
在外界直接调用方法即可
代码示例:
public class Single {
//1.私有化构造方法 --- 不让别人创建对象
private Single(){}
//把这个变量定义为私有
private static final Single s = new Single();
public static Single getInstance() {
return s;
}
}
懒汉式 :
写法一:
-
弊端 : 多线程操作的时候, 很有可能会出创建多个对象
public class Single {
private Single(){}
// 懒汉式
// 核心:延迟加载
private static Single s;
public static Single getInstance() {
if(s == null){
s = new Single();
}
return s ;
}
}
写法二:
-
弊端 : 效率低
public class Single {
private Single(){}
private static Single s ;
public static Single getInstance() {
synchronized (Single.class) {
if(s == null){
s = new Single();
}
}
}
return s ;
}
}
写法三 :