-
设计模式之单例设计模式
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
栏目列表
最新更新
C++反汇编
C#内嵌汇编代码的讨论
使用ARM进行汇编语言
80386学习(二) 80386特权级保护
80386学习(一) 80386CPU介绍
8086汇编语言学习(十) 8086中断
8086汇编语言学习(九) 8086标志寄存器
8086汇编语言学习(九) 8086标志寄存器
8086汇编语言学习(八) 8086子程序
8086汇编语言学习(六) 8086处理结构化数据
C# 8.0和.NET Core 3.0高级编程 分享笔记六:
C# 8.0和.NET Core 3.0高级编程 分享笔记五:
C# 8.0和.NET Core 3.0高级编程 分享笔记四:
C# 8.0和.NET Core 3.0高级编程 分享笔记三:
C# 8.0和.NET Core 3.0高级编程 分享笔记三:
C# 8.0和.NET Core 3.0高级编程 分享笔记二:
C# 8.0和.NET Core 3.0高级编程 分享笔记二:
C# 8.0和.NET Core 3.0高级编程 分享笔记一:
记一次EF+Mysql所遇到的事务不生效的的坑
SQL Server 读写分离配置的一些问题
油猴插件对next.js 开发的影响
JavaScript中的Error错误对象与自定义错误类
教你用JavaScript实现随机点名
教你用JavaScript完成轮播图
教你用JavaScript实现粘性导航
教你用JavaScript随机生成密码
Web入门:JavaScript文字动画
数据库(js部分讲解)
asp.net web api 跨域访问 OPTIONS 405
关闭页面向后台发送消息