1、概念:

java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。
  单例模式有一下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。

  单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。

2、举例说明:

2.1懒汉式单例

 1 /**
 2  *    单例模式测试:
 3  *            ---懒汉模式
 4  * @author 小风微灵
 5  *
 6  */
 7 public class SingleMode {
 8
 9     /*
10      * 第一步:创建一个本身的私有对象:不初始化
11      */
12     private    static SingleMode single=null;
13
14     /**
15      * 第二步:私有化构造器:使得该类不能被new出对象
16      */
17     private SingleMode(){}
18
19     /**
20      * 第三步:一个静态的获取私有对象方法
21      */
22     public static SingleMode getInstance(){
23
24         if(single==null){
25             single=new SingleMode();
26         }
27         return single;
28     }
29 }

2.2饿汉式单例

 1 /**
 2  *    单例模式测试:
 3  *            ---饿汉模式
 4  * @author 小风微灵
 5  *
 6  */
 7 public class SingleMode_EH {
 8     /*
 9      * 第一步:创建一个本身的私有对象:初始化
10      */
11     private    static SingleMode_EH single_=new SingleMode_EH();
12
13     /**
14      * 第二步:私有化构造器:使得该类不能被new出对象
15      */
16     private SingleMode_EH(){}
17
18     /**
19      * 第三步:一个静态的获取私有对象方法
20      */
21     public static SingleMode_EH getInstance(){
22
23         return single_;
24     }
25 }

2.3登记式单例

 1 package mode_single;
 2
 3 import java.util.HashMap;
 4 import java.util.Map;
 5
 6 /**
 7  *    单例模式测试:
 8  *            ---登记式单例模式
 9  * @author 小风微灵
10  *
11  */
12 public class SingleMode_DJS {
13     private static Map<String,SingleMode_DJS> map = new HashMap<String,SingleMode_DJS>();
14     /**
15      * 静态块:事先把实例存放在表Map中
16      */
17     static{
18         SingleMode_DJS single = new SingleMode_DJS();
19         map.put(single.getClass().getName(), single);
20     }
21     /**
22      * 构造器:受保护
23      */
24      protected SingleMode_DJS(){}
25      /**
26       * 静态工厂方法,返还此类惟一的实例
27       * @param name        Map集合中的实例"键":的名称
28       * @return            返回登记式单例对象
29       */
30      public static SingleMode_DJS getInstance(String name) {
31              if(name == null) {
32                   name = SingleMode_DJS.class.getName();
33               }
34               if(map.get(name) == null) {
35                    try{
36                           map.put(name, (SingleMode_DJS) Class.forName(name).newInstance());
37                       } catch (InstantiationException e) {
38                           e.printStackTrace();
39                       } catch (IllegalAccessException e) {
40                           e.printStackTrace();
41                       } catch (ClassNotFoundException e) {
42                           e.printStackTrace();
43                       }
44                   }
45                   return map.get(name);
46      }
47 }

转载于:https://www.cnblogs.com/newwind/p/5652544.html

Java设计模式(学习整理)---单例模式相关推荐

  1. Java设计模式学习记录-单例模式

    前言 已经介绍和学习了两个创建型模式了,今天来学习一下另一个非常常见的创建型模式,单例模式. 单例模式也被称为单件模式(或单体模式),主要作用是控制某个类型的实例数量是一个,而且只有一个. 单例模式 ...

  2. java基础学习整理(一)

    java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...

  3. Java设计模式中的单例模式

    有时候在实际项目的开发中,我们会碰到这样一种情况,该类只允许存在一个实例化的对象,不允许存在一个以上的实例化对象,我们将这种情况称为Java设计模式中的单例模式.设计单例模式主要采用了Java的pri ...

  4. Java设计模式学习记录-解释器模式

    前言 这次介绍另一个行为模式,解释器模式,都说解释器模式用的少,其实只是我们在日常的开发中用的少,但是一些开源框架中还是能见到它的影子,例如:spring的spEL表达式在解析时就用到了解释器模式,以 ...

  5. java设计模式学习笔记之装饰模式

    java设计模式学习笔记之装饰模式 尊重原创,转载请注明出处,原文地址: http://blog.csdn.net/qq137722697 这是一个使用策略模式和构建模式设计的网络请求框架,去看看吧& ...

  6. Java - 设计模式学习总结

    熟练掌握各种设计模式,并能在实际编程开发中灵活运用它们,不仅能使代码更规范,重用性更高,同时也能保证代码的可靠性,提高开发效率.这段时间又系统看了设计模式的相关内容,整理学习总结如下,文中内容如有表达 ...

  7. Java设计模式吐血整理

    设计模式的类型 根据设计模式的参考书 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面 ...

  8. 【一】Java 设计模式学习记录: 工厂模式

    文章目录 一.设计模式的分类 二.工厂模式 2.1 简单工厂模式 2.1.1 解决的问题 2.1.2 简单工厂模式是什么 2.1.3 优缺点 2.2 工厂方法模式 2.2.1 解决的问题 2.2.2工 ...

  9. java设计模式系列:单例模式

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 好好学java java知识分享/学习资源免费分享 关注 精彩内容 java实 ...

  10. Java设计模式:(二)单例模式

    Java设计模式:(二)单例模式 单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式. 意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 主要 ...

最新文章

  1. halcon的算子清点: Chapter 5 滤波
  2. Fabric核心模块之Peer解析
  3. S9306开启web功能!
  4. 通过计算机二级考试的计划,如何轻松通过国家计算机二级考试
  5. 计算机网络现在成功,百收计算机网络努力的人是怎么成功的
  6. url参数中有+、空格、=、%、、#等特殊符号的问题解决
  7. java之简单的Callback使用总结
  8. linux 秒数转时间格式,通过delphi将秒数转换成日期格式
  9. Python学习10 内置属性 对象属性 类属性 私有属性 私有方法 对象方法 类方法 静态方法
  10. vim学习笔记(4)帮助与配置
  11. 计算机考研没奖,备战考研本科期间没有什么奖项,考研复试会有影响吗?
  12. java integer常量池_为什么Integer常量池的行为在127发生变化?
  13. medoo update mysql_Medoo Update的使用:修改更新数据
  14. VMware 和 linux镜像文件
  15. js小游戏之锅打灰太狼
  16. 按摩新方法(辅助药物治疗肝,肾,肺等慢性疾病)
  17. 选择适合esx服务器的性能,VMWare ESX Server性能调整
  18. word wps 出版 常用操作
  19. 中青网财经:请一位心理学博士当CTO 只有马云敢这么做
  20. Excel合并单元格怎么分组排序?

热门文章

  1. jmeter设置全局变量
  2. 各个国家的市场分析(摩洛哥,德国)
  3. 社交类产品设计的9个点,整不好会挨怼~
  4. 花了几百万,创业一年学到了什么
  5. 产品经理需要去客服部门轮岗吗?
  6. 你是什么时候真正从产品助理成长为产品经理的?
  7. 【独家】玩流量,先读懂数据再说吧!PM玩转流量课程笔记大放送
  8. 远程桌面连接出现身份验证错误。 要求的函数不受支持,这可能是由于 CredSSP 加密 Oracle 修正。...
  9. springboot使用restTemplate post提交值 restTemplate post值
  10. ios开发两个简单的错误提示和原因