代码之家  ›  专栏  ›  技术社区  ›  Larry Watanabe

转换器模式

  •  5
  • Larry Watanabe  · 技术社区  · 15 年前

    在上一个工作中,我的经理建议使用转换器模式将数据从数据表转换为对象。基本上,translator类只有静态(即类)方法,因此它是函数调用的聚合。我的初始方法是为每个对象实现构造函数,这些对象可以将DataTable行作为参数,并创建与数据对应的实例。

    他说翻译课是微软建议的,它提供了更好的代码模块化。我可以看到这一点,但同时它似乎是一种非常非OO的方法(尽管访问者模式具有相似的特性)。

    你们中有人用过这个模式吗?你觉得怎么样?利弊?

    4 回复  |  直到 11 年前
        1
  •  4
  •   GrayWizardx    15 年前

    C2.Com 似乎转换器模式是访问者模式的非OOP实现。它注意到了本文的一些缺点,包括在OOP语义中很难表达(但不是代码),换句话说,如果您对其余的代码使用纯OOP,它将工作得很好,但可能没有太多意义。

        2
  •  4
  •   Igor Zevaka    15 年前

    我想你在说 Entity Translator . 我认为在这种情况下,转换器自然是一种静态方法。它生活的地方是一个美学问题。它还应该非常容易进行单元测试,因为它应该只依赖于它转换的两个数据结构。听起来他们的“数据契约”的另一个名字是DTO(数据传输对象)。

        3
  •  0
  •   Beep beep    15 年前

    如果您可以在没有任何外部依赖项的情况下执行映射,那么在使用静态方法以外的任何方法时都没有用处。

        4
  •  0
  •   Richard Quinn    15 年前

    也许我错过了什么,但为什么不直接用LINQ呢?

        IEnumerable<Customer> customerQuery =
        from cust in customers
        where cust.City == "London"
        select cust;
    
    foreach (Customer customer in customerQuery)
    {
        Console.WriteLine(customer.LastName + ", " + customer.FirstName);
    }
    

    无论如何,translatorPattern是要将数据结构从一种表示形式更改为另一种等效结构。在这里 http://c2.com/cgi/wiki?TranslatorPattern 更深入的信息。

    推荐文章