单例模式

public class CEOextends Staff {

//    1、饿汉单例模式

    private static final CEOceo =new CEO();

//构造函数私有

    private void CEO() {

}

//公有的静态函数,对外暴露获取单例对象的接口

    public static CEO getCeo() {

return ceo;

}

}

****************************************************************************************

public class CEOextends Staff {

private static CEOinstance =null;

private CEO() {

}

//    2、懒汉模式

    public static synchronized CEO getInstance() {

if (null ==instance) {

instance =new CEO();

}

return instance;

}

}

***********************************************************************

public class CEOextends Staff {

private static CEOinstance =null;

private CEO() {

}

//    3、Double Check Lock

    public static CEO getInstance(){

if (null ==instance){

synchronized (CEO.class){

if (null ==instance){}

instance =new CEO();

}

}

return instance;

}

}

*********************************************************************

public class CEOextends Staff {

private CEO() {

}

public static CEO getInstance() {

return SingletonHolder.ceo;

}

/*4、静态内部类    推荐使用的单例模式*/

    private static class SingletonHolder {

private static final CEOceo =new CEO();

}

}

------------------------------------------------------------------------------------------------------------------

// 要杜绝单例对象在反序列化是重新生成对象 需加入该方法

    private Object readResolve()throws ObjectStreamException{

return instance;

}

***********************************************************************************************

/*5、枚举单例*/

public enum CeoEnumSingleimplements InterStaff{

INSTANCE;

@Override

    public void work() {

}

}

*******************************************************************************************

/*使用容器实现单例模式*/

public class SingletonManager {

private static MapobjectMap =new HashMap();

private SingletonManager() {

}

public static void registerService(String key, Object instance) {

if (!objectMap.containsKey(key)) {

objectMap.put(key,instance);

}

}

public static Object getService(String key){

return  objectMap.get(key);

}

}

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

推荐阅读更多精彩内容

  • 前言 本文主要参考 那些年,我们一起写过的“单例模式”。 何为单例模式? 顾名思义,单例模式就是保证一个类仅有一个...
    tandeneck阅读 2,538评论 1 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 摘要:设计模式之一:单例模式目录介绍1.单例模式介绍2.单例模式定义3.单例模式使用场景4.单例模式的实现方式 4...
    肆虐的悲傷阅读 475评论 0 2
  • PS:这是一个小白的学习记录之路。大神看见不要笑,狮虎看见不要生气的哈。 题目:单例模式的实现方式 解决思路:狮虎...
    福小满满满阅读 355评论 0 0
  • 说到家乡,桂林,最想念的不是一大桌团圆饭,而是一碗小小的米粉。 这么一份小时候每天能嗦好几回家常之物,如今去变成我...
    月半小王睿阅读 437评论 2 5