所谓单例模式,就是保证类在内存中只有一个对象

如何保证类在内存中只有一个对象?

我们平时在实例化对象时,基本都是通过new的方式来实例化一个对象,其实说白了就是调用了需要实例化类的默认的构造方法,所以为了保证类只有一个对象,我们需要将类的对象设置为private

1)控制类的创建,不让其他类创建本类的对象,即需要设置private属性

2)在本类中定义一个本类的对象

单例模式的用途:

单例模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用。

单例模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例。如果我们能够保证系统中自始至终只有唯一一个数据库连接对象,显然我们会节省很多内存开销和CPU利用率。这就是单例模式的用途。单例模式的适用性有如下描述:

1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。

2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。

下面对单例模式的懒汉式和饿汉式进行简单介绍:

1.饿汉式:在程序启动或单件模式类被加载的时候,单件模式实例就已经被创建

2.懒汉式:当程序第一次访问单件模式实例时才进行创建。

如何选择:如果单件模式实例在系统中经常被用到,饿汉式是一个不错的选择,反之,如果单件模式在系统中很少用到或者几乎不会用到时,那么懒汉式更好些。

饿汉模式demo:

public Simple(){

private static Single s=new Single();

private Single(){

}

public static Simple getSimple(){

return s;

}

}

一般用于枚举法:

enum Single {

Single;

private Single() {

}

public void print(){

System.out.println("hello world");

}

}

public class SingleDemo {

public static void main(String[] args) {

Single a = Single.Single;

a.print();

}

}

懒汉式demo:

class Single{

private static Single s = null;

public Single() {

if (s == null)

s = new Single();

return s;

}

}

懒汉模式在使用时容易引起不同步问题,所以应该创建同步“锁”,demo如下:

class Single1 {

private static Single1 s = null;

public Single1() {

}

//同步函数的demo

public static synchronized Single1 getInstance() {

if (s == null)

s = new Single1();

return s;

}

//同步代码快的demo加锁,安全高效

public static Single1 getInStanceBlock(){

if(s==null)

synchronized (Single1.class) {

if(s==null)

s = new Single1();

}

return s;

}

}

标签:饿汉,Single1,模式,Single,实例,单例,public

来源: https://www.cnblogs.com/siduoxiaohua/p/10998078.html

懒汉饿汉 php,单例模式——懒汉模式,饿汉模式相关推荐

  1. Java设计模式(方法工厂类、单例模式、代理模式、策略模式、适配器、观察者、装饰类等)

    目录 一.简单工厂模式(Factory Method) 二.工厂方法模式 三.抽象工厂模式(Abstract Factory) 3.1 三个工厂模式区别: 四.单例模式(Singleton) 1.饿汉 ...

  2. C++单例模式 : 懒汉模式 与 饿汉模式

     单例模式:         只能有一个实例,有懒汉和饿汉区分,实现核心思想:         1.构造函数私有化         2.使用静态函数作为接口来获取类对象 1.懒汉模式:         ...

  3. 单例模式的原理/懒汉模式/饿汉模式以及不同版本的单例模式程序

    单例模式 单例模式定义 懒汉模式与饿汉模式 懒汉模式 饿汉模式 懒汉模式和饿汉模式的区别 懒汉模式的不同版本 版本一 版本二 版本三 版本四 单例模式定义 保证一个类仅有一个实例,并提供一个该实例的全 ...

  4. 大聪明教你学Java设计模式 | 第一篇:单例模式 (懒汉模式和饿汉模式)

    前言 大聪明在写代码的过程中发现设计模式的影子是无处不在,设计模式也是软件开发人员在软件开发过程中面临的一般问题的解决方案.大聪明本着"独乐乐不如众乐乐"的宗旨与大家分享一下设计模 ...

  5. 单例模式(懒汉模式-双检锁、饿汉模式、静态内部类模式)-详细

    文章目录 前言 单例模式(懒汉模式-双检锁.饿汉模式.静态内部类模式)-详细 01 单例模式是什么? 02 单例模式的好处? 03 单例模式的三种模式 03::01 懒汉模式 03::01::01 问 ...

  6. C# 设计模式之单例模式(懒汉模式、饿汉模式、静态内部类模式)

    C# 设计模式之单例模式(懒汉模式.饿汉模式.静态内部类模式) 应用场景:在整个软件运行生命周期内,一个类只允许一次实例化,例如数据库连接池的连接对象创建:通过使用单例模式来避免反复创建连接对象,从而 ...

  7. java 单例模式 懒汉和饿汉

    单线程下的单例模式 定义: 确保一个类只有一个实例,并提供一个全局访问点. 单例代码: package wfb.pattern;public class Singleton {private stat ...

  8. 单例模式(饿汉实现、懒汉实现)

    目录 (MS) 1. 饿汉实现 2.  懒汉模式 ① 单线程版本 ② 线程安全版 ③ 线程安全改进版⼀ 以上存在线程安全问题. ④ 线程安全改进版⼆ 以上存在线程安全问题,对象创建需要三步: ⑤ 线程 ...

  9. 单例模式之懒汉式/饿汉式/结合二者之优的模式

    单例模式主要用来产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例. 两个好处: 对于频繁使用的对象,可以省略new操作花费的时间 new的次数少了,对系统内存的使用频率就小了,那么GC压力 ...

  10. 【设计模式:单例模式】单例模式01:饿汉模式

    单例模式:饿汉模式 正文开始@Assassin 目录: 单例模式:饿汉模式 1. 什么是设计模式? 2. 单例设计模式: 2.1 什么是单例模式? 2.2 单例模式应用实例: 1. 什么是设计模式? ...

最新文章

  1. iis php mysql 一键安装_LNMP(Nginx服务,MySQL 服务,安装PHP服务 手动安装技术文档)
  2. 【转】C++调用Matlab的.m文件
  3. Throwable、Error、Exception、RuntimeException 区别
  4. Bresenham直线算法与画圆算法
  5. android期末课设选题_Android课程设计报告书.doc
  6. 通过bocker把项目部署到容器后,也启动了镜像,但是浏览器报错网址连接不安全,建立安全连接失败,SSL接收到了一个超出最大准许长度的记录
  7. 开源表单系统推荐:TDUCK填鸭表单
  8. QuantumultX 初学者傻瓜教程
  9. poj-1979改-红与黑
  10. 关于对当前大学生的痛点分析
  11. 谷歌浏览器与IE浏览器不兼容问题
  12. 使用WPF与C#实现鼠标画线
  13. 第17课:强化学习的模型训练
  14. Java开发导入腾讯地图描点_腾讯地图点聚合开发-实现地图找房功能
  15. 京东java电话面试问题_【京东Java面试】京东电话技术面试,面试题目完全没思路。-看准网...
  16. python用递归方式实现最大公约数_Python程序查找最大公因数(HCF)或最大公约数(GCD)...
  17. VS2013写智能电子钢琴
  18. 安卓开发实现蓝牙通信——两设备相互发消息
  19. 参与知乎 live — 编写优雅的前端业务代码总结
  20. DynamicPDF HTML TO PDF 转换器

热门文章

  1. VirtualBox安装Ubuntu教程
  2. web网页设计与开发____婚纱网站(5页 汉堡菜单 响应式)
  3. 图书馆管理系统5W1H分析
  4. Mac iOS Simulator录制Gif图
  5. speedoffice如何根据身份证号码提取出性别
  6. 群晖让usb打印机变成网络打印机
  7. 鼠标测试软件m,罗技M525鼠标使用测试_罗技 M525鼠标_键鼠评测-中关村在线
  8. DRF serializer 自定义列
  9. 计算机公式sin,三角函数计算公式大全
  10. 宏观经济学通识课-读书笔记