(根据MSDN Webcast相关课程整理)

模式分类:

从目的来看:

创建型(Creational):负责对象的创建

结构型(Structural):处理类与对象间的组合

行为型(Behavioral):类与对象交互中的职责分配

从范围来看:

类模式:处理类与子类的静态关系

对象模式:处理对象间的动态关系

单件模式下的类,保证该类在系统中只有一个实例,以确保逻辑的正确性与效率。

常用方法:使用private型的构造函数,并使用只读属性或get方法来产生唯一的静态实例。(锁对象前进行双检查,以适用于多线程模式)

产生新对象的方法:

1, 构造器;

2, 序列化

.Net环境下一种更精简的单件模式的实现(兼容多线程环境):

这种方式的缺点是不支持参数化的构造对象方式。不过可以通过添加一个Initiation方法来完成对象初始化的工作。

横向延伸:

单件模式可以扩展到N件模式

纵向延伸:

单件模式中对象的构造也还是可以放在new中进行,将控制对象生成的逻辑放到构造器中,注意多线程环境下的处理。

<完>

转载于:https://www.cnblogs.com/luckeryin/archive/2011/12/16/2290470.html

C#面向对象设计模式第二讲:Singleton Pattern单件模式(创建型模式)相关推荐

  1. C#面向对象设计模式纵横谈——Singleton单件(创建型模式)

    Singleton单件(创建型模式) 动机(Motivation) 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性.以及良好的效率. 如何绕过常规的 ...

  2. C++设计模式之工厂模式(创建型模式)

    学习软件设计,向OO高手迈进! 设计模式(Design pattern)是软件开发人员在软件开发过程中面临的一般问题的解决方案. 这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来 ...

  3. java 23种设计模式详尽分析与实例解析_Java 23种设计模式详尽分析与实例解析之一--创建型模式...

    模式分析:在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做.这个核心类仅仅负责给出具体工厂必须实现的接口,而不负责哪一个产品类被实例化这种细节,使得工厂方法模式允许 ...

  4. C#设计模式之一单例模式(Singleton Pattern)【创建型】

    一.引言 看了李建忠老师的讲的设计模式已经有一段时间了(这段时间大概有一年多了),自己还没有写过自己的.有关设计模式的文章.这次想写一些关于设计模式的文章,用自己的理解和代码来写,算是复习一遍.写作的 ...

  5. 23种设计模式----原型模式----创建型模式

    原型模式 1.1什么是原型模式 1.2为什么要使用原型模式 2.原型模式的解释 3.例子 3.1例子将要实现的目标 3.2例子设计 3.3原型类 3.4具体实现的3个原型实例类 3.5管理类 3.6工 ...

  6. C#面向对象设计模式纵横谈——6.Prototype 原型模式(创建型模式)

    动机(Motivation) 在软件系统中,经常面临着"某些结构复杂的对象"的创建工作.由于需求的变化,这些对象经常面临着剧烈的变化,但他们却拥有比较稳定一致的接口. 如何应对这种 ...

  7. 设计模式基于C#的实现与扩展——创建型模式(三)

    3. 抽象工厂 Provide an interface for creating familyes of related or dependent objects. 提供一个创建一系列相关或相互依赖 ...

  8. 《设计模式:可复用面向对象软件的基础》——面向对象设计原则、创建型模式(笔记)

    文章目录 二.面向对象设计原则(补充) 2.1 重新认识面向对象 2.2 面向对象设计原则 2.2.1 依赖倒置原则(DIP) 2.2.2 开放封闭原则(OCP) 2.2.3 单一职责原则(SRP) ...

  9. 备战面试日记(3.2) - (设计模式.23种设计模式之创建型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.6 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...

最新文章

  1. [译][python]ImportError:attempted relative import with no known parent package
  2. P4847 银河英雄传说V2 非旋treap
  3. 测试框架 如何测试私有方法_高效的企业测试–测试框架(5/6)
  4. 在win10上使用Vmware安装Mac OS
  5. LeetCode 1283. 使结果不超过阈值的最小除数(二分查找)
  6. 7002.ubuntu18.04将软件图标固定到工具栏
  7. ffice 2016 文件运行excel的数据透视表中的数据切片器的时候自动关闭
  8. maters鸿蒙系统,Flutter入门进阶之旅(十)DialogToast
  9. 走进C标准库(6)——string.h中函数的实现memchr
  10. python英文分句_英文分句
  11. 智能客服vs人工客服,两者真水火不容?
  12. 秘密secret的几个应用场景
  13. python的永久存储——pickle‘泡菜’ ,‘腌制’天气查询脚本
  14. speedpdf(Excel)表格如何重复打印标题行?
  15. 一分钟搞懂 微调(fine-tuning)和prompt
  16. SK海力士量产业界最高容量的移动端DRAM
  17. iZotope RX 10 (专业的音频降噪修复软件) win/mac版
  18. C语言——PTA 稳赢
  19. windows svn 忽略文件夹
  20. ALSA子系统(十八)------指纹解锁动画提示声卡顿问题解析

热门文章

  1. php树莓派魔镜,用树莓派和显示器制作一面“魔镜”
  2. C语言代码规范(八)使用const修饰值不允许改变的变量
  3. c# 命名空间命名规范_C#中的命名空间
  4. 如何在Java中检查对象是否为空?
  5. java 方法 示例_带有示例的Java EnumSetSupplementOf()方法
  6. oracle云数据库 免费的吗,使用免费的Oracle云服务-创建ATP数据库
  7. php中函数参数个数问题
  8. excel oledb mysql_OLEDB操作Excel
  9. python用电度数设计_无所不能的Python之配电设计自动化系统
  10. 102. 二叉树的层序遍历 golang