• 静态类工厂的实例解释.


    上次我写了一篇关于静态类工厂的文章,
    谢谢大家的关心,不过有很多的读者都表示看不太懂,我这里举一个详细的例子
    和他家讨论一下.如果大家在自己的项目中有用到这样的模式的话,有兴趣可以
    展示出来,大家一起讨论,谢谢.
    我这里的例子是微软的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类,来区分在
    我们是在哪里捕捉到这个异常的.
    欢迎大家来讨论这种写法的优缺点,谢谢!

  • 相关阅读:
    在Linux CentOS 6.6上安装Python 2.7.9
    CentOS yum 安装LAMP PHP5.4版本
    yum 安装php环境
    如何在Eclipse配置PyDev插件
    vagrant使用小结
    虚拟机下安装CentOS6.5系统教程
    python
    library cahce pin
    利用分析函数删除重复数据
    组合索引避免索引扫描后在过滤
  • 原文地址:https://www.cnblogs.com/wanghualiang/p/230611.html
Copyright © 2020-2023  润新知