Java中的设计模式 - 单例模式

时间:2022-10-01 19:09:10

Java中的设计模式 - 单例模式

单例模式是Java设计模式中一个很常用的设计模式

它非常简单,但是也还是有一些值得注意的点经常被我们忽略

// 编写Run接口
public interface Run {
public void run();
}

编写实现


/**
* @author Created by 谭健 2017年7月2日 16:21:41
* 单例模式的设计
* 1- 类只能被创建一次,减少系统开销
* 2- 不需要new操作符,降低系统内存使用频率,减轻GC压力
* 3- 保证每一个操作都是由这个类来操作的
*/

public class Singleton implements Run{

// 防止被实例化的私有构造方法
private Singleton(){};

// 私有的静态实例除了提供返回之外,还有一个作用是为了防止被引用
// 等于null是为了在类初始化的时候不着急加载此类,而是在需要使用的时候才加载,以实现延迟加载
private static Singleton singleton = null;

// 使用一个静态内部类来创建类的实例,这样做可以保证在多线程环境下不会出现对象没有被初始化的问题
// JVM的内部机制可以保证在加载类的时候线程互斥,所以当singleton 引用为null的时候,JVM能保证Singleton类的对象只被创建一次
// 另外,JVM的互斥机制还使得getInstance()方法不需要加锁,保证了性能要求
private static class InsideSingleton{
private static Singleton Class = new Singleton();
}

/**
* 获取类实例的静态方法
* @return Singleton 对象的实例
*/

public static Singleton getInstance() {
if (singleton == null) {
singleton = InsideSingleton.Class;
}
return singleton;
}

/**
* 序列化:保证序列化前后保持一致
* @return Singleton 的引用
*/

public Object readResolve() {
return singleton;
}

@Override
public void run() {
// 编写逻辑代码实现
}
}