设计模式[创建型]之单件模式

从某种意义上来说,单件模式是限制而不是改进类的创建。它可以保证一个类有切且仅有一个实例,并提供一个访问它的全局访问点。像这样的情况在实际程序设计中是常常遇到的。
一般来说,可以通过使用静态方法来创建单件模式:
要让一个类只有一个实例,最容易的方法就是在类中嵌入一个静态变量,并在第一个类实例中设置该变量,而且每次进入构造函数都要进行检查。不管类有多少个实例,静态变量只能有一个实例。同时为了防止类被多次实例化,我们需要把构造函数申明为私有的,这样以后就只能在类的静态方法里创建一个实例,如:

public   class  kimTest{
private   static   bool  instance = false ;
private  kimTest(){}
public   static  kimTest getObject()
{
if ( ! instance)
return   new  kimTest();
else
return   null ;
}

这个方法的优点在于如果单件已经存在,不需要在考虑异常处理了,因为只不过是从getObject()方法返回了一个空值而已。

kimTest  obj = kimTest.getObject();
if (obj != null )
{
Console.WriteLine(.)
}
else
{..}

上面的方法有个缺点,需要我们去检查getObject()方法的返回值,以确保它不是空的。这样可以采用一种变通的方法:创建这样一个类,如果试图多次实例化该类,它会抛出一个异常。

public   class  SingletonException:Exception
{
 
public  SingletonException( string  s): base  (s)
 {}
}
这样除了通过base调用了父类的构造函数外,新的异常类实际上什么也不做。
于是上面的方法可以实现为:
public   class  kimTest{
static   bool  instance = false ;
public  kimTest()
{
if (instance)
throw   new  SingletonException( " only one allowed " );
else
instance
= true ;
}
}

你可能感兴趣的:(设计模式[创建型]之单件模式)