有时候在实际项目的开发中,我们会碰到这样一种情况,该类只允许存在一个实例化的对象,不允许存在一个以上的实例化对象,我们将这种情况称为Java设计模式中的单例模式。设计单例模式主要采用了Java的private和static关键字属性。单例模式又根据是否延迟加载实例过程分为懒汉式单例模式和饿汉式单例模式。

  例如下面理解一段符合单例模式的需求。假设人分为普通人和超人两种,地球上大多数都是普通人,而超人只有一个,我们在创建这两个实体类的时候就应该采用单例模式。下面是分别采用懒汉式和恶汉式单例模式的代码实现:

  懒汉式单例模式的实现:

 1 class SuperMan3{//懒汉式
 2     private SuperMan3(){//私有化构造器
 3
 4     }
 5     public static SuperMan3 s3 = null;
 6     public  static SuperMan3 getInstance(){
 7             if(s3==null){
 8                 s3 = new SuperMan3();
 9             }
10             return s3;
11     }
12 }

饿汉式单例模式的代码实现:

1 class SuperMan4{//恶汉式
2     private SuperMan4(){//私有化构造器
3
4     }
5     private static SuperMan4 s4 = new SuperMan4();
6     public static SuperMan4 getInstance(){
7         return s4;
8     }
9 }

可以看出,取名为懒汉式和饿汉式还是很生动的,具体懒汉式和饿汉式单例模式在线程安全和资源占用上还有很多的区别,这里就不详细说明了。然后验证一下是否这两个超人类满足单例模式,我们可以在主函数中创建两个实例,然后比较它们是否相等。

1      SuperMan3 s3 = SuperMan3.getInstance();
2         SuperMan3 s33 = SuperMan3.getInstance();
3         System.out.println(s3==s33);//true
4
5         SuperMan4 s4 = SuperMan4.getInstance();
6         SuperMan4 s44 = SuperMan4.getInstance();
7         System.out.println(s4==s44);//true

输出的结果都是true,可以看出无论实例化了多少个实例,最终实例之间全是相等的,即只有一个实例,满足了单例模式的需求。

转载于:https://www.cnblogs.com/Echoer/p/4572668.html

Java设计模式中的单例模式相关推荐

  1. java 多线程的单例模式,Java多线程中的单例模式两种实现方式

    Java多线程中的单例模式 一.在多线程环境下创建单例 方式一: package com.ietree.multithread.sync; public class Singletion { priv ...

  2. 里氏替换原则——举例说明Java设计模式中的里氏替换原则

    里氏替换原则--举例说明Java设计模式中的里氏替换原则 1. 前言 官方定义: 2. 举例说明 2.1 例子介绍 2.2 反例 2.2.1 类图说明 2.2.2 代码说明 2.2.3 测试 2.2. ...

  3. 依赖倒置原则——举例说明Java设计模式中的依赖倒置原则

    依赖倒置原则--举例说明Java设计模式中的依赖倒置原则 一.前言 看官方定义 二.举例说明 2.1 例子介绍(无聊的可看看,着急的请跳过) 2.2 反例 2.1.1 反例1 (1)类图说明 (2)代 ...

  4. 接口隔离原则——举例说明Java设计模式中的接口隔离原则

    举例说明Java设计模式中的接口隔离原则 一.举例说明 1.反例 (1)类图说明 (2)代码说明 (3)测试 (4)分析缺点(总结) 2.正例 (1)类图说明 (2)代码说明 (3)测试 (4)方案评 ...

  5. Java设计模式探讨之单例模式

    单例模式是在平时的项目开发中比较常见的一种设计模式,使用比较普遍,网上的资料也是一抓一大把,小Alan也来凑凑热闹,为以后充实点设计模式相关的内容做个简单的开篇. 单例模式是一种创建对象的模式,用于产 ...

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

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

  7. 【Java设计模式】GOF32 - 单例模式

    思维和思考的方式才是最重要的,语言只是一种工具. GOF23 Group of Four--国外的四个软件大牛总结出来的模式. 创建型模式:帮助我们创建对象 单例模式 单例模式的常见使用场景: 单例模 ...

  8. Java设计模式中组合模式是什么/树形结构怎么组合或显示存储,编程怎么实现树形结构

    继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库Java设计模式克隆下载学习使用! 5.7 组合模式 5.7.1 概述 又名整体模式,是用于把一组相似的对象当作一个单一的对象 依据树形结构 ...

  9. Java设计模式中的六大设计原则

    最近一直在看有关设计模式的博客和文章,发现自己对于设计模式的认识和理解还是有点浅显,于是想动手写博客巩固一下. 在开始阐述设计模式之前,首先介绍一下设计模式中的六大原则:      总原则-开闭原则 ...

最新文章

  1. 你还不会创建jQuery插件 ?
  2. 奇怪-正则匹配的test函数
  3. css3 奇技淫巧 - 如何给小汽车换个背景色谈起
  4. Django 学习(一)Django安装以及初步使用
  5. 2.建一个新目录/oldboy的硬链接数是多少?(考试题答案系列)
  6. Docker持续集成与容器管理--系列教程
  7. 编程语言对比 导入模块
  8. UVA11554 Hapless Hedonism【数学计算+大数】
  9. Scala深入浅出实战经典---001-Scala开发环境搭建和HelloWorld解析
  10. ajax如何向action发送数据的
  11. 当你不能回答别人的提问时怎么办
  12. 2021-09-14 if__name__ == ‘__main__‘的用法
  13. 松下plc编程线usb驱动
  14. 使用selenium + pytest + allure做WBE UI自动化
  15. 电动汽车仿真系列-基于动态规划的混合动力汽车能量管理
  16. 深度学习框架有什么作用?
  17. 商业级web阅读器项目(下下)
  18. android Removing unused resources requires unused code shrinking to be turned on. 错误记录
  19. 可视化 | Python时间序列化NBA球星赛季数据
  20. 禅道开源版安装 - windows

热门文章

  1. 电脑计算机里怎么找恢复出厂设置,普通电脑怎么恢复出厂设置
  2. linux服务器架设指南笔记
  3. 微服务项目部署在docker容器运行
  4. python xlrd模块_Python中xlrd模块解析
  5. mysql union 别名报错_MySQL中UNION和UNION ALL的使用
  6. java酒店管理系统_酒店管理系统
  7. mysql——数据库事务(C#代码)
  8. ArcGIS——vs2015安装arcgis engine不兼容
  9. 10个你必须知道的jQueryMobile代码片段
  10. 手机游戏再造创业神话 80后月入过百万