zoukankan      html  css  js  c++  java
  • 静态类工厂的实例解释.

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

  • 相关阅读:
    ASP.NET MVC 扩展相关
    新.NET开发十大必备工具
    c#调用存储过程两种方法
    TweakUI取消pc喇叭声
    baidu mp3竟然还加密,太扯了
    NTLM在使用代理服务器的情况下,第三次握手可能出错
    httpclient解析gzip网页
    eclipse不能自动编译工程的解决方法
    bat设置环境变量
    java的ZipOutputStream压缩文件的两个问题(乱码和每次zip后文件md5变化)
  • 原文地址:https://www.cnblogs.com/wanghualiang/p/230611.html
Copyright © 2011-2022 走看看