zoukankan      html  css  js  c++  java
  • 设计模式-单例模式实现过程案例

    设计思路:1.创建静态私有对象;2.构造方法私有化;3.静态公有的对象地址方法

    一.

    /**
    * @author jiagx
    * @description 单例模式-线程不安全版本
    * @date 2020/5/27 9:54
    */
    public class Singleton {

    private static Singleton singleton;

    private Singleton(){
    };

    public static Singleton getInstance(){
    if (singleton==null){
    singleton=new Singleton();
    }
    return singleton;
    }

    }


    二.
    /**
    * @author jiagx
    * @description 单例模式-同步锁单例模式
    * @date 2020/5/27 9:58
    */
    public class SingletonSyn {
    private static SingletonSyn singleton;

    private SingletonSyn(){};

    public static synchronized SingletonSyn getInstance(){
    synchronized (SingletonSyn.class){
    if (singleton==null){
    singleton=new SingletonSyn();
    }
    }
    return singleton;
    }
    }


    三.
    /**
    * @author jiagx
    * @description 单例模式-双层校验锁机制的同步锁单例模式
    * @date 2020/5/27 10:12
    */
    public class SingletonSyn2 {

    private static SingletonSyn2 singletonSyn2;

    private SingletonSyn2(){

    }


    public static synchronized SingletonSyn2 getInstance(){

    if (singletonSyn2==null){
    synchronized (SingletonSyn2.class){
    if (singletonSyn2==null){
    singletonSyn2=new SingletonSyn2();
    }
    }
    }
    return singletonSyn2;
    }
    }


    四.
    /**
    * @author jiagx
    * @description 单例模式-无锁线程安全单例模式,最优秀的单例模式
    * @date 2020/5/27 10:38
    */
    public class SingletonSynNoLock {

    private final static SingletonSynNoLock singletonSynNoLock = new SingletonSynNoLock();

    private SingletonSynNoLock(){};

    @Synchronized
    public static SingletonSynNoLock getInstance(){
    return singletonSynNoLock;
    }

    }
  • 相关阅读:
    PHP实现微信退款的分析与源码实现
    thinkphp对180万数据批量更新支持事务回滚
    在线工具
    php连接redis
    Redis PHP连接操作
    阿里大于短信接口整合TP5
    Unity3d中如何查找一个脚本被挂在那些预设上面?
    泰课在线夜猫的贪食蛇
    EasyTouch5ForSiki学院
    unity游戏热更新
  • 原文地址:https://www.cnblogs.com/guangxiang/p/12971168.html
Copyright © 2011-2022 走看看