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

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() {
    // 编写逻辑代码实现
    }
}

你可能感兴趣的:(设计思想,-,设计模式)