设计模式C#描述——单例与多例模式

作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

单例模式有以下特点:

单例类只能有一个实例。

单例类必须自己创建自己的唯一实例。

单例类必须给所有其他对象提供这一实例。

一个典型的单例类的实现如下所示:其中构造子私有表示子类不能被继承。

public class Singleton

{

private static Singleton m_instance = null;

private Singleton()

{

}

public static Singleton getInstance()

{

if(m_instance==null)

{

m_instance=new Singleton();

}

return m_instance;

}

}

所谓多例模式,实际上就是单例模式的自然推广,单例类一般情况下只可以有一个实例,但单例类也可以推广到允许有限个实例,这种模式就是多例模式。作为对象的创建模式,多例模式有以下特点:

多例类可以有多个实例。

多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。

多例类分为有上限多例类与无上限多例类。

一个有上限的多例类已经把实例的上限当作逻辑的一部分,并建造到了多例类的内部。如下:

public class Multiton

{

private static Multiton instance1=null;

private static Multiton instance2=null;

private Multiton()

{

}

public static Multiton getInstance(int whichOne)

{

if(whichOne==1)

{

if(instance1==null)

{

instance1=new Multiton ();

}

return instance1;

}

else

{

if(instance2==null)

{

instance2=new Multiton ();

}

return instance2;

}

}

}

多例类的实例数目不需要有上限,实例数目没有上限的多例模式就叫做无上限多例模式。由于没有上限的多例类对实例的数目是没有限制的,因此,虽然这种多例模式是单例模式的推广,但是这种多例类并不一定能够回到单例类。一般采用聚集管理所有的实例。

设计模式C#描述——单例与多例模式相关推荐

  1. 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式

    设计模式C#描述之--简单工厂模式 前 言:设计模式是软件开发领域的精髓之一.学好设计模式是目前每一个开发人员的必修课.目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并 不很适合初学者 ...

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

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

  3. 设计模式的征途—1.单例(Singleton)模式

    单例模式属于创建型模式的一种,创建型模式是一类最常用的设计模式,在软件开发中应用非常广泛.创建型模式将对象的创建和使用分离,在使用对象时无需关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修 ...

  4. 软件设计模式的学习(以Java为例)

    软件设计模式的学习(以Java为例) 单例模型 定义: 懒汉模式 饿汉模式 单例模式的优缺点 优点 缺点 工厂模式 定义 分类 工厂方法模式 抽象工厂模式 代码实现 优点 缺点 文章引用 软件设计模式 ...

  5. Java面向对象(接口、匿名内部类、object类、单例、多例)

    1.1接口(抽象类与接口,优先使用接口) 抽象方法和全局常量的集合,使用interface定义,使用implements继承 接口可以多继承(可以向上强制转换) 接口只能有public,一般不写常量 ...

  6. Spring(07)——单例注入多例之lookup-method

    2019独角兽企业重金招聘Python工程师标准>>> Spring(07)--单例注入多例之lookup-method 博客分类: spring 7 单例注入多例之lookup-m ...

  7. SpringMVC Controller单例和多例

    对于SpringMVC Controller单例和多例,下面举了个例子说明下. 第一次:类是多例,一个普通属性和一个静态属性. 结果:普通属性:0.............静态属性:0 普通属性:0. ...

  8. JAVA编写单例(Singleton)模式

    单例(Singleton)模式:在Java应用程序中,一个类Class只有一个实例存在. 第一种写法形式(饿汉式): 定义一个类,它的构造函数为private的,它有一个private的static的 ...

  9. Spring中bean的单例与多例

    Spring中bean的单例与多例 前言 Spring中单例与多例 如何配置单例/多例 单例/多例Bean的使用事项 总结 前言 之前其实已经学习过对于单例模式的使用单例模式讲解,也用过一段时间的Sp ...

最新文章

  1. linux_磁盘配额
  2. java中的关键字static
  3. PHP学习笔记-GD库与Jpgraph的使用
  4. 用几条shell命令快速去重10G数据
  5. python一维数组定义,python一维数组保存
  6. 视频直播技术(二):延迟优化
  7. 95-235-040-源码-task-Flink 对用户代码异常处理
  8. 吴恩达机器学习作业4(python实现)
  9. 在ubuntu安装使用miniconda
  10. 当数据库遇上自动驾驶,阿里云 DAS 在自治诊断的突破
  11. 历时半载,我的新课上线了
  12. SAP VA01 消息 没有用于售达方 XXXXXX 的客户主记录存在
  13. stdio.h 之 printf
  14. 电脑怎么彻底卸载程序
  15. 特立独行的幸福(25分)Python
  16. 微信清除自带浏览器的缓存
  17. hdu6438(优先队列)
  18. 重要:QA和QC的区别
  19. Kettle连接Mysql报错:Driver class org.gjt.mm.mysql.Driver could not be found
  20. 【MQTT基础篇(一)】MQTT介绍

热门文章

  1. airflow sql_alchemy_conn mysql_airflow的安装和使用 - 完全版
  2. c语言中比较两个数组函数,输入两个数组,调用large函数比较,计数,输出统计结果...
  3. 北斗报文php,北斗卫星一代短报文通信技术
  4. Linux常用命令学习(shell 脚本)
  5. PCL:求两条直线交点
  6. 单目深度估计与伪雷达点云、可视化
  7. C语言实现RC4序列密码
  8. 数字拆分问题算法回溯_回溯算法:求子集问题!
  9. Image deformation of AffineSimilarityRigidProjective
  10. Ubuntu 14.04 64bit安装IPython