设计模式C#描述——单例与多例模式
设计模式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#描述——单例与多例模式相关推荐
- 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式
设计模式C#描述之--简单工厂模式 前 言:设计模式是软件开发领域的精髓之一.学好设计模式是目前每一个开发人员的必修课.目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并 不很适合初学者 ...
- 设计模式学习笔记——单例(Singleton)模式
设计模式学习笔记--单例(Singleton)模式 @(设计模式)[设计模式, 单例模式, Singleton, 懒汉式, 饿汉式] 设计模式学习笔记单例Singleton模式 基本介绍 单例案例 类 ...
- 设计模式的征途—1.单例(Singleton)模式
单例模式属于创建型模式的一种,创建型模式是一类最常用的设计模式,在软件开发中应用非常广泛.创建型模式将对象的创建和使用分离,在使用对象时无需关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修 ...
- 软件设计模式的学习(以Java为例)
软件设计模式的学习(以Java为例) 单例模型 定义: 懒汉模式 饿汉模式 单例模式的优缺点 优点 缺点 工厂模式 定义 分类 工厂方法模式 抽象工厂模式 代码实现 优点 缺点 文章引用 软件设计模式 ...
- Java面向对象(接口、匿名内部类、object类、单例、多例)
1.1接口(抽象类与接口,优先使用接口) 抽象方法和全局常量的集合,使用interface定义,使用implements继承 接口可以多继承(可以向上强制转换) 接口只能有public,一般不写常量 ...
- Spring(07)——单例注入多例之lookup-method
2019独角兽企业重金招聘Python工程师标准>>> Spring(07)--单例注入多例之lookup-method 博客分类: spring 7 单例注入多例之lookup-m ...
- SpringMVC Controller单例和多例
对于SpringMVC Controller单例和多例,下面举了个例子说明下. 第一次:类是多例,一个普通属性和一个静态属性. 结果:普通属性:0.............静态属性:0 普通属性:0. ...
- JAVA编写单例(Singleton)模式
单例(Singleton)模式:在Java应用程序中,一个类Class只有一个实例存在. 第一种写法形式(饿汉式): 定义一个类,它的构造函数为private的,它有一个private的static的 ...
- Spring中bean的单例与多例
Spring中bean的单例与多例 前言 Spring中单例与多例 如何配置单例/多例 单例/多例Bean的使用事项 总结 前言 之前其实已经学习过对于单例模式的使用单例模式讲解,也用过一段时间的Sp ...
最新文章
- linux_磁盘配额
- java中的关键字static
- PHP学习笔记-GD库与Jpgraph的使用
- 用几条shell命令快速去重10G数据
- python一维数组定义,python一维数组保存
- 视频直播技术(二):延迟优化
- 95-235-040-源码-task-Flink 对用户代码异常处理
- 吴恩达机器学习作业4(python实现)
- 在ubuntu安装使用miniconda
- 当数据库遇上自动驾驶,阿里云 DAS 在自治诊断的突破
- 历时半载,我的新课上线了
- SAP VA01 消息 没有用于售达方 XXXXXX 的客户主记录存在
- stdio.h 之 printf
- 电脑怎么彻底卸载程序
- 特立独行的幸福(25分)Python
- 微信清除自带浏览器的缓存
- hdu6438(优先队列)
- 重要:QA和QC的区别
- Kettle连接Mysql报错:Driver class org.gjt.mm.mysql.Driver could not be found
- 【MQTT基础篇(一)】MQTT介绍
热门文章
- airflow sql_alchemy_conn mysql_airflow的安装和使用 - 完全版
- c语言中比较两个数组函数,输入两个数组,调用large函数比较,计数,输出统计结果...
- 北斗报文php,北斗卫星一代短报文通信技术
- Linux常用命令学习(shell 脚本)
- PCL:求两条直线交点
- 单目深度估计与伪雷达点云、可视化
- C语言实现RC4序列密码
- 数字拆分问题算法回溯_回溯算法:求子集问题!
- Image deformation of AffineSimilarityRigidProjective
- Ubuntu 14.04 64bit安装IPython