Singleton模式学习
动机(Motivation)
在软件系统中,经常有这样一些类,必须保证它们在系统中只存在一个类的实例,才能确保它们逻辑的正确性,以及良好的效率
如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例。
这应该是类设计者的责任,不是类使用者的责任
意图(Intent)
保证一个类仅有一个实例,并提供一个实例的全局访问点。
通用实现:
1.静态初始化
using System;
namespace SafeSingletonDemo
{
public sealed class StaticInitialization
{
private static readonly StaticInitialization instance = new StaticInitialization();
private StaticInitialization()
{
}
public static StaticInitialization Instance
{
get
{
return instance;
}
}
}
}
2.延迟初始化Singleton
using System;
namespace SafeSingletonDemo
{
public sealed class DelayInitialization
{
DelayInitialization()
{
}
public static DelayInitialization Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
static Nested()
{
}
internal static readonly DelayInitialization instance = new DelayInitialization();
}
}
}
注意:
Singleton模式的实例构造器可以设置成protected允许子类派生
Singleton模式一般不要支持ICloneable接口
Singleton模式一般不要支持序列化,因为这样可能产生多个实例
Singleton模式只考虑到对象创建的管理,没有考虑对象销毁的管理。就支持垃圾回收的平台和对象的开销来看,我们一般没有必要对其销毁进行特殊的处理。
转载于:https://www.cnblogs.com/jewleo/archive/2009/04/30/1250_1.html
Singleton模式学习相关推荐
- 设计模式学习笔记——单例(Singleton)模式
设计模式学习笔记--单例(Singleton)模式 @(设计模式)[设计模式, 单例模式, Singleton, 懒汉式, 饿汉式] 设计模式学习笔记单例Singleton模式 基本介绍 单例案例 类 ...
- Singleton模式的学习
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作. 还有, singleton能够被状态化; ...
- Jeff Dean谈2020年机器学习趋势:多任务和多模式学习将成为突破口
点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 谷歌AI负责人Jeff Dean 近日接受专访,讨论了2020 年机器学习领域趋势,他 ...
- Android发展Singleton模式
这是什么Singleton模式?它是Java23之间的一种模式,在Android发展也有着广泛的应用,例Calander类别,当对象是由未创建 new Calander而是Calander.getIn ...
- Singleton模式笔记
在C++中,尽量用Singleton替换全局变量是个很好的建议,Singleton一般如下: class CSingleton { private: static CSingleton* m ...
- java设计模式:Singleton模式
Singleton模式是java中用到最多的设计模式.用于控制的个数,防止多余的实例化及修改.在仅有一个对象存在时,操作很有效. 1.构造函数私有化,其它类不能实例化对象 2.引用私有化,没有其它的修 ...
- 细颗粒度Singleton模式实现
作为一个很典型的设计模式,Singleton模式常常被用来展示设计模式的技巧,并且随着技术的演进,.NET语言和Java都已经把经典<Design Patterns : Elements of ...
- Design Pattern: Singleton 模式
一句话概括:保证一个类仅有一个实例,并提供一个访问它的全局访问点. Singleton的英文意义是独身,也就是只有一个人,应用在物件导向语言上,通常翻译作单例:单一个实例(Instance). 很多 ...
- Windows保护模式学习笔记(十四)—— 阶段测试
Windows保护模式学习笔记(十四)-- 阶段测试 题目一 解题步骤 题目二 解题步骤 题目一 描述:给定一个线性地址,和长度,读取内容 int ReadMemory(OUT BYTE* buffe ...
最新文章
- RHEL5.1安装VM TOOL及中文乱码终极解决方案
- java 调用计算机程序方法
- const char*, char const*, char*const 的区别
- python科学计算笔记(二)pandas获取网络文件
- php4 class,PHP在类中获得当前class名称_php
- Git中的bash与CMD的区别
- 2017年前端最受欢迎调查报告:ES 6,React和Sublime Text依然霸主
- git 常用命令思维导图
- Asp.Net高级知识回顾_HttpModule及应用程序生命周期_1
- mybitis SQL insert into 多条数据
- DirectSHOW中的视频捕捉 (乱七八糟整理)
- VUE3 之 生命周期函数
- 职业作秀V1.7.9更新公告
- 关于原型设计在高等教育行业中的运营分析报告
- Java Web项目性能测试 - JMeter测试网站吞吐量、反应时间百分比、流量
- python星星排列_python中怎么实现星星排列
- 剑三手游服务器不稳定进不了,火爆一时的《剑三手游》,不到一月宣告凉凉!...
- 2. 认识O(logN)的排序
- Phone拨号流程(Android9.0 Phone拨号)
- 2017大学计算机基础书,2017大学计算机基础试题「含答案」