| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 详解Java设计模式之单例模式(Singleton Pattern) -> 正文阅读 |
|
[Java知识库]详解Java设计模式之单例模式(Singleton Pattern) |
大家在使用Windows的时候不知道有没有注意过一个细节,在我们使用任务管理器的时候没有办法同时打开两个,也就是说,它在整个系统中只有唯一的一个实例。 对于系统中的某些类来说,只有一个实例很重要 ! 例如:
如果不使用机制对窗口对象进行唯一化,将弹出多个窗口,如果这些窗口显示的内容完全一致,则是重复对象,浪费内存资源,如果这些窗口显示的内容不一致,则意味着在某一瞬间系统有多个状态,与实际不符,也会给用户带来误解,不知道哪一个才是真实的状态。因此,有时确保系统中某个对象的唯一性即一个类只能有一个实例非常重要。 Java单例模式(Singleton Pattern)文章目录模式定义单例模式是一种对象创建型模式。
单例模式的要点有三个:
模式结构单例模式只包含一个 Singleton(单例角色)类,在单例类的内部实现只生成一个实例,同时它提供一个静态的getInstance()工厂方法,让客户可以使用它的唯一实例。 为了防止在外部对其实例化,将其构造函数设计为私有,在单例类内部定义了一个 Singleton类型的静态对象,作为外部共享的唯一实例。 一般情况下单例模式的代码实现如下 👇
为了测试单例类所创建对象的唯一性,可以编写如下客户端测试代码
编译代码并运行,输出结果为:
应用场景
使用单例模式有一个必要条件: 在一个系统中要求一个类只有一个实例时才应当使用单例模式。反过来,如果一个类可以有几个实例共存,就需要对单例模式进行改进,使之成为多例模式。
模式优缺点主要优点在于提供了对唯一实例的受控访问并可以节约系统资源。
其主要缺点在于因为缺少抽象层而难以扩展,且单例类职责过重。
模式案例一.JDK中单例模式的应用实例
在每一个Java应用程序里面,都有唯一的一个Runtime对象,通过这个Runtime对象,应用程序可以与其运行环境发生相互作用。在JDK中,Runtime类的源代码片段如下:
二.Spring中的应用实例当我们试图要从 Spring容器中获取某个类的实例时,默认情况下Spring会通过单例模式进行创建,也就是在Spring 的 bean 工厂中这个bean的实例只有一个,代码如下:
三.单例模式案例之身份证号码(练习)
现使用单例模式模拟该场景。
从结果可以看出,两次创建的IdentityCardNo对象内存地址相同,是同一个对象,封装在其中的号码no属性不仅值相等,其内存地址也一致,是同一个成员属性。 学习更多设计模式还请访问:https://blog.csdn.net/weixin_45692705?spm=1011.2124.3001.5343 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 4:58:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |