`
tiandirensoon
  • 浏览: 594368 次
文章分类
社区版块
存档分类
最新评论

设计模式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#设计模式(1)——单例模式.pdf

    单例模式设计。

    c#单例模式(Singleton)的6种实现

    如:IO处理,数据库操作等,由于这些对象都要占用重要的系统资源,所以我们必须限制这些实例的创建或始终使用一个公用的实例,这就是我们今天要介绍的——单例模式(Singleton)。  使用频率高 单件模式(Singleton...

    C#设计模式–单例模式

    首先我介绍的是设计模式中比较简单的一个模式——单例模式(因为这里只牵涉到一个类)  二、单例模式的介绍  说到单例模式,大家第一反应应该是——什么是单例模式?,从“单例”字面意思上理解为——一个类只有...

    深入浅出设计模式(中文版)

    3.2.3C#实例——多文档系统 37 3.2.4Java实例——扩展了的手机工厂 41 3.2.5优势和缺陷 44 3.2.6应用情景 44 3.3AbstractFactoryPattern(抽象工厂模式) 45 3.3.1定义 45 3.3.2现实例子——扩展了的兵工厂 48...

    深入浅出设计模式(中文版电子版)

    3.2.3C#实例——多文档系统 37 3.2.4Java实例——扩展了的手机工厂 41 3.2.5优势和缺陷 44 3.2.6应用情景 44 3.3AbstractFactoryPattern(抽象工厂模式) 45 3.3.1定义 45 3.3.2现实例子——扩展了的兵工厂 48...

    举例讲解C#编程中对设计模式中的单例模式的运用

    单例模式的介绍 说到单例模式,大家第一反应应该就是——什么是单例模式?...从单例模式的定义中我们可以看出——单例模式的使用自然是当我们的系统中某个对象只需要一个实例的情况,例如:操作系统中只能

    这可能是最全的单例模式了

    设计模式之——单例模式单例的几种实现1. 懒汉单例模式2. synchronized 修饰的懒汉单例模式3. 双重检查锁定的单例模式4. 静态内部类实现单例模式5. 饿汉实现单例模式6. 饿汉变种实现单例模式7. 枚举实现单例模式...

    C#23种设计模式_示例源代码及PDF

    单例模式: 而且自行实例化并向整个系统提供这个实 单例模式 单例模式确保某一个类只有一个实例, 例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。 结构型模式 6、ADAPTER —在朋友聚会上碰到...

    《PHP高级程序设计_模式、框架与测试》中文版PDF

    它专门针对有一定经验的php程序员,详细讲解了对他们最为重要的主题:高级面向对象、设计模式、文档、测试和标准php库等内容。同时,为适应目前web开发的新趋势,作者还全面探讨了mvc架构和zend framework,以及ajax...

    PHP高级程序设计_模式、框架与测试(简体中文高清版)

    PHP 5以后,它的面向对象特性也足以与Java和C#相抗衡。然而,讲述PHP高级特性的资料一直缺乏,大大影响了PHP语言的深入应用。  本书填补了这一空白。它专门针对有一定经验的PHP程序员,详细讲解了对他们最为重要的...

    PHP高级程序设计_模式、框架与测试

    它专门针对有一定经验的php程序员,详细讲解了对他们最为重要的主题:高级面向对象、设计模式、文档、测试和标准php库等内容。同时,为适应目前web开发的新趋势,作者还全面探讨了mvc架构和zend framework,以及ajax...

Global site tag (gtag.js) - Google Analytics