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

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
设计模式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;



}

}

}

多例类的实例数目不需要有上限,实例数目没有上限的多例模式就叫做无上限多例模式。由于没有上限的多例类对实例的数目是没有限制的,因此,虽然这种多例模式单例模式的推广,但是这种多例类并不一定能够回到单例类。一般采用聚集管理所
11AIU93G022153.jpg
seover="window.status='正文--设计模式C#描述——单例多例模式';return true">
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
个人分类: .net
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭