设计模式--单例模式(Singleton Pattern)

单例模式------确保一个类只有一个实例,并提供一个全局访问点。

类图:

1、懒汉式

/**

* 懒汉式

* @author 码农

*

*/

public class LazySingleton {

private static LazySingleton uniqueInstance;

private LazySingleton(){}

public static LazySingleton getInstance(){

if(uniqueInstance==null){

uniqueInstance=new  LazySingleton();

}

return uniqueInstance;

}

}

2、饿汉式

/**

* 饿汉式

* @author 码农

*

*/

public class HungrySingleton {

private static HungrySingleton uniqueInstance=new HungrySingleton();

private HungrySingleton(){}

public static HungrySingleton getInstance(){

return uniqueInstance;

}

}

3、线程安全模式

/**

* 线程安全模式

* @author 码农

*

*/

public class SynchronizedSingleton {

private static SynchronizedSingleton uniqueInstance;

private SynchronizedSingleton(){}

public static synchronized SynchronizedSingleton getInstance(){

if(uniqueInstance==null){

uniqueInstance=new SynchronizedSingleton();

}

return uniqueInstance;

}

}

4、双重枷锁模式

/**

* 双重加锁模式

* @author zyzhmily

*

*/

public class DoubleLockSingleton {

private volatile static DoubleLockSingleton uniqueInstance;

private DoubleLockSingleton(){}

      public static DoubleLockSingleton getInstance(){

    if(uniqueInstance==null){

    synchronized(DoubleLockSingleton.class){

    if(uniqueInstance==null){

    uniqueInstance=new DoubleLockSingleton();

    }

    }

    }

    return uniqueInstance;

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • 众所周知,在代码中采用合理的设计模式,不仅仅能使代码更容易被他人理解,同时也能使整体模块拥有更合理的结构,方便后期...
    JeromeLiee阅读 277评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • 面向对象的六大原则 单一职责原则 所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于...
    JxMY阅读 975评论 1 3
  • 我不喜欢你了,就像风走了八千里,不问归期。 我天生傻笨又后知后觉,敏感脆弱像个小孩,掏心掏肺地想对一个人好,结果除...
    奥巴马爱吃辣条阅读 1,028评论 2 4