java 设计模式之单例的实例详解

发布时间 - 2026-01-11 03:21:17    点击率:

java 设计模式之单例的实例详解

设计模式思想

什么是设计模式:我作为初学者,今天第一次正式学习设计模式,我觉得对与理解什么是设计模式很重要,那么什么是设计模式呢?

设计模式:解决问题的一种行之有效的思想。

设计模式:用于解决特定环境下、重复出现的特定问题的解决方案

我的理解是前人在软件设计的时候碰到了一类问题,他们总结出了一套行之有效,并且经过验证的解决方案。

设计模式的优点:

1、设计模式都是一些相对优秀的解决方案,很多问题都是典型的、有代表性的问题,学习设计模式,我们就不用自己从头来解决这些问题,相当于在巨人的肩膀上,复用这些方案即可。

2、设计模式已经成为专业人士的常用词汇,不懂不利于交流。

3、能让你设计的系统更加专业,让系统有更好的架构。

设计模式1~~单例

单利设计模式是用来解决在内存里面只能存在一个的某个类 的问题。 这个比较抽象,打个比方说 你要做一个打麻将游戏,丢骰子,第一个人丢了显示的几个数字,后面的人也要用。骰子这个类在内存里只允许存在一份。此类问题就需要用单例设计方案解决。

第一种: 饿汉式 先自己new 出来。速度快,单是占用内存多。

public class Single {
  private final static Single s = new Single();

  //类只能有一个故私有化构造方法,不让外面new对象
  private Single(){
  }
//工厂方法的命名规范
 getinstance
//当外面没办法new对象时候,我们对像给外面调要自己来new
// 当没发new 对象时候,必须是静态方法,给外界使用。
    public static Single getInstance(){
    return s;
  }
}

第二种: 懒汉式

//懒汉式
public class Single2 {
  // 先步开内存,需要用的时候才new 
  private static Single2 s=null;
  private Single2(){
  }
  // synchronized 用来防多线程时。第一个和第二个线程抢资源都会进入s==null,
时new 两次。
  public synchronized static Single2 getInstance(){
    if(s==null){
      s = new Single2();
    }
    return s;
  }
}

synchronized 看成锁是属于getInstance方法的。当方法属于static时,锁属于类模板的,当方法是对象调用时锁就属于对象的。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # 单例  # 单例的设计模式  # java 单例模式(饿汉模式与懒汉模式)  # java 中设计模式之单例  # 单例模式垃圾回收_动力节点Java学院整理  # java设计模式之单例模式的详解及优点  # Java单例模式简单示例  # java 单例模式和工厂模式实例详解  # 都是  # 行之有效  # 需要用  # 的人  # 几个  # 让你  # 出了  # 我觉得  # 第一个  # 你要  # 如有  # 不懂  # 两次  # 没办法  # 希望能  # 第二个  # 要用  # 很重要  # 此类  # 做一个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么实现验证码(Captcha)功能  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  canvas 画布在主流浏览器中的尺寸限制详细介绍  香港服务器租用费用高吗?如何避免常见误区?  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  如何选择PHP开源工具快速搭建网站?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  Python进程池调度策略_任务分发说明【指导】  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  linux top下的 minerd 木马清除方法  如何在云主机快速搭建网站站点?  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  如何用y主机助手快速搭建网站?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  黑客如何通过漏洞一步步攻陷网站服务器?  详解Oracle修改字段类型方法总结  音响网站制作视频教程,隆霸音响官方网站?  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  如何获取免费开源的自助建站系统源码?  android nfc常用标签读取总结  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  如何快速选择适合个人网站的云服务器配置?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  C++用Dijkstra(迪杰斯特拉)算法求最短路径  手机网站制作与建设方案,手机网站如何建设?  javascript基于原型链的继承及call和apply函数用法分析  Laravel如何处理文件下载请求?(Response示例)  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  创业网站制作流程,创业网站可靠吗?  如何用VPS主机快速搭建个人网站?  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel如何配置和使用缓存?(Redis代码示例)  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何用好域名打造高点击率的自主建站?  如何在建站主机中优化服务器配置?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  香港服务器如何优化才能显著提升网站加载速度?  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  如何在云主机上快速搭建网站?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧