静态类工厂的实例解释.

上次我写了一篇关于静态类工厂的文章,
谢谢大家的关心,不过有很多的读者都表示看不太懂,我这里举一个详细的例子
和他家讨论一下.如果大家在自己的项目中有用到这样的模式的话,有兴趣可以
展示出来,大家一起讨论,谢谢.
我这里的例子是微软的ExceptionBuilder类,这是一个完全有静态方法组成的类.
而且所有方法都返回一个Exception的类.
例如其中的一个方法

internal class ExceptionBuilder
{
   
public static Exception ArgumentNull(string arg);
}

从函数的定义来看,很容易看出其实他返回的是一个ArgumentNullException的类,
当然ArgumentNullException是Exception的一个子类.
现在我们要应用这个类来抛出一个异常类了,例

public class DataTableCollection
{
   
private void ArrayAdd(DataTable)
   
{
       
throw ExceptionBuilder.ArgumentNull("table");
   }

}

几乎所有的异常的类都可以包括在ExceptionBuilder中.例:
public static Exception AddNewNotAllowNew();
public static Exception AutoIncrementDataType();//Argument异常类.
通过类方法可以很方便的调用并且可以不需要知道其中的细节.
同时可以对相同的异常类调用不同的参数.例

internal class ExceptionBuilder
{
   
protected static Exception _Data(string error)
   
{
      
return ExceptionBuilder.Trace(new DataException(error));
   }

   
private   static Exception _Trace(Exception e)
   
{
       
return e;
   }

   
public static Exception AddNewAddNew()
   
{
     
return ExceptionBuilder._Data(Res.GetString("DataView_AddNewAddNew"));
   }

   
public static Exception AddNewNotAllowNull()
   
{
     
return ExceptionBuilder._Data(Res.GetString("DataView_AddNewNotAllowNull"));
   }

}

这里我们只要调用不同的静态方法,就很容易获得表示不同情况的DataException类,来区分在
我们是在哪里捕捉到这个异常的.
欢迎大家来讨论这种写法的优缺点,谢谢!

原文地址:https://www.cnblogs.com/wanghualiang/p/230611.html