动机(Motivation)

在软件系统中,经常有这样一些类,必须保证它们在系统中只存在一个类的实例,才能确保它们逻辑的正确性,以及良好的效率

如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例。

这应该是类设计者的责任,不是类使用者的责任

意图(Intent)

保证一个类仅有一个实例,并提供一个实例的全局访问点。

通用实现:

1.静态初始化

Code
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

Code
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模式学习相关推荐

  1. 设计模式学习笔记——单例(Singleton)模式

    设计模式学习笔记--单例(Singleton)模式 @(设计模式)[设计模式, 单例模式, Singleton, 懒汉式, 饿汉式] 设计模式学习笔记单例Singleton模式 基本介绍 单例案例 类 ...

  2. Singleton模式的学习

    Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作. 还有, singleton能够被状态化; ...

  3. Jeff Dean谈2020年机器学习趋势:多任务和多模式学习将成为突破口

    点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 谷歌AI负责人Jeff Dean 近日接受专访,讨论了2020 年机器学习领域趋势,他 ...

  4. Android发展Singleton模式

    这是什么Singleton模式?它是Java23之间的一种模式,在Android发展也有着广泛的应用,例Calander类别,当对象是由未创建 new Calander而是Calander.getIn ...

  5. Singleton模式笔记

    在C++中,尽量用Singleton替换全局变量是个很好的建议,Singleton一般如下: class  CSingleton { private:     static CSingleton* m ...

  6. java设计模式:Singleton模式

    Singleton模式是java中用到最多的设计模式.用于控制的个数,防止多余的实例化及修改.在仅有一个对象存在时,操作很有效. 1.构造函数私有化,其它类不能实例化对象 2.引用私有化,没有其它的修 ...

  7. 细颗粒度Singleton模式实现

    作为一个很典型的设计模式,Singleton模式常常被用来展示设计模式的技巧,并且随着技术的演进,.NET语言和Java都已经把经典<Design Patterns : Elements of ...

  8. Design Pattern: Singleton 模式

    一句话概括:保证一个类仅有一个实例,并提供一个访问它的全局访问点. Singleton的英文意义是独身,也就是只有一个人,应用在物件导向语言上,通常翻译作单例:单一个实例(Instance).  很多 ...

  9. Windows保护模式学习笔记(十四)—— 阶段测试

    Windows保护模式学习笔记(十四)-- 阶段测试 题目一 解题步骤 题目二 解题步骤 题目一 描述:给定一个线性地址,和长度,读取内容 int ReadMemory(OUT BYTE* buffe ...

最新文章

  1. RHEL5.1安装VM TOOL及中文乱码终极解决方案
  2. java 调用计算机程序方法
  3. const char*, char const*, char*const 的区别
  4. python科学计算笔记(二)pandas获取网络文件
  5. php4 class,PHP在类中获得当前class名称_php
  6. Git中的bash与CMD的区别
  7. 2017年前端最受欢迎调查报告:ES 6,React和Sublime Text依然霸主
  8. git 常用命令思维导图
  9. Asp.Net高级知识回顾_HttpModule及应用程序生命周期_1
  10. mybitis SQL insert into 多条数据
  11. DirectSHOW中的视频捕捉 (乱七八糟整理)
  12. VUE3 之 生命周期函数
  13. 职业作秀V1.7.9更新公告
  14. 关于原型设计在高等教育行业中的运营分析报告
  15. Java Web项目性能测试 - JMeter测试网站吞吐量、反应时间百分比、流量
  16. python星星排列_python中怎么实现星星排列
  17. 剑三手游服务器不稳定进不了,火爆一时的《剑三手游》,不到一月宣告凉凉!...
  18. 2. 认识O(logN)的排序
  19. Phone拨号流程(Android9.0 Phone拨号)
  20. 2017大学计算机基础书,2017大学计算机基础试题「含答案」

热门文章

  1. 如何在Linux实现自动运行程序
  2. Modular Multiplicative Inverse(模乘逆元)
  3. 将一列数据转换成一个字段数据,逗号分隔
  4. vs2013 乱码问题
  5. Avalon-MM 阿窝龙妹妹应用笔记
  6. 命名式ACL配置实例
  7. js 函数定义的方式
  8. Glide和Picasso的区别
  9. table表格固定前几列,其余的滚动
  10. HDU2866 Special Prime