-
设计模式之单例设计模式
1.1 基本概念
- 在某些特殊场合中,⼀个类对外提供且只提供⼀个对象时,这样的类叫做单例类,⽽设计单例类的流程和思想叫做单例设计模式。
1.2 实现流程
- 私有化构造方法,使用private关键字修饰。
- 声明本类类型的引用指向本类类型的对象,并使用private static关键字共同修饰。
- 提供公有的get方法负责将对象返回出去,并使用public static关键字共同修饰。
1.3 采用饿汉式实现
1.3.1 核心代码
1.3.2 特点概述
- 保证了多线程安全,执行效率比较高。
- 类加载时创建对象,容易产生垃圾对象且浪费内存空间,没有达到延迟加载的效果。
1.4 采用懒汉式实现
1.4.1 核心代码
1.4.2 特点概述
- 调用方法才会创建对象,避免垃圾对象产生和内存空间的浪费,达到了延迟加载的效果。
- 需要加锁才能保证多线程安全,加锁导致执行效率比较低。
1.5 采用双重锁校验实现
1.5.1 核心代码
1.5.2 特点概述
- 采用双重锁机制既能保证多线程安全,又能保证执行效率比较高,同时达到了延迟加载的效果。
1.6 采用静态内部类实现
1.6.1 核心代码
1.6.2 特点概述
- 只适用于静态域,不适用于实例域延迟初始化时使用。
- 采用静态内部类来保证多线程安全和执行效率以及延迟加载,比双重锁校验式更加简单。
1.7 采用枚举实现
1.7.1 核心代码
1.7.2 特点概述
- 实现单例设计模式的最佳方式,保证多线程安全和执行效率,支持序列化机制,绝对防止多次实例的创建。
1.8 实际应用
- Web应用中的配置对象,由于配置文件是共享资源,通常采用单例模式。
- 网站或者App程序的计数器,通常也采用单例模式,便于进行同步。
-
操作系统中的任务管理器和回收站,都是采用的单例模式。
出处:https://www.cnblogs.com/gezishan007/p/16896668.html
最新更新
Objective-C语法之代码块(block)的使用
VB.NET eBook
Add-in and Automation Development In VB.NET 2003 (F
Add-in and Automation Development In VB.NET 2003 (8
Add-in and Automation Development in VB.NET 2003 (6
Add-in and Automation Development In VB.NET 2003 (5
AddIn Automation Development In VB.NET 2003 (4)
AddIn And Automation Development In VB.NET 2003 (2)
Addin and Automation Development In VB.NET 2003 (3)
AddIn And Automation Development In VB.NET 2003 (1)
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式