单例模式

(读了一篇博文,记一下笔记啦,学习学习嘛。。)

目的:为保证程序的生命周期内一个类的实例只有一个(为什么这样做,当遇到具体问题自会清楚,这里不再赘述)。

直接上代码:

public class demo{

//私有静态全局变量​

private static demo onlyclass;

//私有静态全局变量,用来加锁防止多线程情况下,会出现多个类实例。

//当程序中有多个线程时,一个线程进入if从句但还没有new对象时,另一个线程进入此

//时onlyclass还为空,另一个线程又会new一个对象出来,这时违背了单例模式目

//(ps:虽然发生的情况很小,但也不可不防。)

private static object obj = new object();

//私有构造函数,保证在其他类中无法创建该类实例。

private demo(){

//code

}

//共有静态方法,在其他类中调用会创建该类对象

public static demo getInstance(){

//双重检查锁定,可以防止多线程情况下,每次执行getInstance()方法都会

//加锁。(不管onlyclass是否为空都会加锁的,如果都会加锁有那么些许的影响性能。)

if(onlyclass==null){

lock(obj){

if(onlyclass==null){

onlyclass = new demo();

}

}

return onlyclass;

}

}

单例模式之懒汉式:

其实上面介绍的就是懒汉式,为啥叫了“懒汉”呢,其实不是程序不勤快,而是当不调用

getInstance()方法时它就不会创建对象,将程序赋予人的感情,显得有些懒。

单例模式之饿汉式:

饿汉式就是当不调用getInstance()方法时也会创建一个类对象的实例出来,只要加载该类

就会创建出一个对象,显得很是勤快,是不是有点像是肚子饿了。

上代码:

public class demo{

private static demo onlydemo = new demo();

private demo(){

//code

}

public static demo getInstance(){

return onlyclass;

}

}

看完饿汉了那么一定会有一个疑问为什么在饿汉式中不去处理多线程同步的安全问题呢?

这是因为不管是在Java中还是c#中系统会自动处理这些问题。所以饿汉式不用考虑线程安全问题。

但是这样看来是不是“饿汉”要比“懒汉”好呢?这个。。。各有各的好处吧。饿汉式也有缺点,

就是加载类时就new对象,会提前占用系统资源。

设计模式学习之单例模式相关推荐

  1. js设计模式学习之单例模式

    单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点 实现一个单例模式 用一个变量标志当前是否已经为某个类型创建过对象,如果是,则下次直接返回之前创建的对象. var Singleton = ...

  2. C#设计模式学习笔记-单例模式

    最近在学设计模式,学到创建型模式的时候,碰到单例模式(或叫单件模式),现在整理一下笔记. 在<Design Patterns:Elements of Resuable Object-Orient ...

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

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

  4. 设计模式学习(一) 单例模式

    引入 何为单间模式?简单的描述,用来创建独一无二的,只能有一个实例的对象的入场券. 定义:确保一个类只有一个实例,并提供一个全局访问点 揭破经典的单例模式实现 package com.zpkj.pro ...

  5. 设计模式学习 之 单例模式

    单例模式: 定义 一个类有且仅有一个实例,并且自行实例化向整个系统提供. <来自百科> 这些 概念和要点 是 了解 单例模式的 一些基本概念 C# 单例实现要点 Singleton模式是限 ...

  6. Header First设计模式学习笔记——单例模式

    2019独角兽企业重金招聘Python工程师标准>>> 问题引入         有时候对于有些对象,我们只需要一个,多了反而会出现很多问题.比如:线程池,缓存,处理器偏好设置,日志 ...

  7. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  8. java/android 设计模式学习笔记(1)---单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  9. 7 种 Javascript 常用设计模式学习笔记

    7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...

最新文章

  1. 漫画 | 没有一个程序员能拒绝这样的女朋友
  2. java plugin 安装_eclipse maven plugin 插件 安装 和 配置
  3. 规则化和模型选择(Regularization and model selection)
  4. AB1601spi传输慢的问题
  5. codesys raspberry pi_11月7日|Pi第四次减产来袭?4点浅析中文区用户关心的问题
  6. 带属性的字符串(NSMutableAttributedString)的使用
  7. 2020-2021年NLP有什么核心技术的更迭吗?或者有什么推动领域发展的paper吗?
  8. 「Photoshop 入门教程」如何在Mac版 Photoshop 中打开图像?
  9. DLLPasswordFilterImplant:DLL密码过滤器
  10. 哪里的http和socks5代理ip稳定速度快
  11. JavaScript笔记-前端AES加密
  12. 无胁科技-TVD每日漏洞情报-2022-7-12
  13. 怎样快速将Word转长图
  14. xp系统开机自检很久_XP系统取消开机自检的5种方法?
  15. java response返回json_Response返回JSON数据到前台页面
  16. 一个入行很长的老鸟给新手的一些建议——转
  17. 【转】word提升图像质量
  18. Docker镜像-Docker
  19. 跨境电商未来将合规化发展——扬帆牧哲
  20. 解决页面下载文件,资源不存在页面出现空白的问题。

热门文章

  1. 突然!高通骁龙855 Plus公布:手机厂商们集体沸腾
  2. 英特尔回应安全漏洞问题:已在硬件层面解决
  3. 易到追债贾跃亭 乐视回应:对方无耻甩锅
  4. UNIX网络编程——基本TCP套接字编程 【转贴】
  5. 十大笔记本品牌型号命名规则【联想】
  6. 2018春节前新马泰游
  7. asp.net mvc使用mysql_如何使用MySQL设置ASP.NET MVC 2?
  8. webgl 封装和可使用开源方案
  9. Linux移植随笔:终于解决Tslib的问题了
  10. 递归的使用不当 导致 压缩文件不能压缩二级目录