• 设计模式之单例模式


    1、什么是单例模式?
    单例模式就是一个类只会有一个实例。
    2、单例模式实现方式
    2.1 懒汉模式
    /**
    * 保证该类只会生成一个类实例
    */
    public class LayzSinglePattern {
    private static LayzSinglePattern instance ;
     
    /**
    * 静态内部类,静态内部类是第一次被使用的时候加载的
    */
    private static class LayzHolder {
    private static final LayzSinglePattern INSTANCE = new LayzSinglePattern();
    }
     
    private LayzSinglePattern(){
    //do something
    }
     
    /**
    * 线程不安全的
    * @return
    */
    public static LayzSinglePattern getInstance() {
    if (null == instance) {
    instance = new LayzSinglePattern();
    }
    return instance;
    }
     
    /**
    * 线程安全的
    * @return
    */
    public static synchronized LayzSinglePattern getInatanceSecurity() {
    if (null == instance) {
    instance = new LayzSinglePattern();
    }
    return instance;
    }
     
    /**
    * 双重锁保证线程安全
    * @return
    */
    public static LayzSinglePattern getInstanceDoubbleLock() {
    if (null == instance) {
    synchronized(LayzSinglePattern.class) {
    if (null == instance){
    instance = new LayzSinglePattern();
    }
    }
    }
     
    return instance;
    }
     
    /**
    * 静态内部类保证线程安全
    * @return
    */
    public static LayzSinglePattern getInstanceInnerClass() {
    return LayzHolder.INSTANCE;
    }
     
    }
     
    2.2 饿汉模式
    /**
    * 饿汉模式采用关键字final修饰,final天生是线程安全的
    */
    public class HungrySinglePattern {
     
    private static final HungrySinglePattern instance = new HungrySinglePattern();
     
    public static HungrySinglePattern getInstance() {
    return instance;
    }
    }
     
     注意:JAVA反射会使单例模式失效
     
     
     
  • 相关阅读:
    CentOS7安装MongoDB
    CentOS7怎样安装Redis4.0.12
    Ubuntu18.04安装Python3.6.8
    nGrinder性能测试平台的安装部署
    Scrapy爬取携程桂林问答
    CentOS安装log.io
    CentOS7安装Supervisor3.1.4
    renren_fast性能测试平台的安装部署
    eolinker接口测试平台的安装部署
    UnityShader基础光照效果
  • 原文地址:https://www.cnblogs.com/tspeking/p/tspeking.html
Copyright © 2020-2023  润新知