簡體   English   中英

翻譯模式

[英]Translator Pattern

在之前的工作中,我的經理建議使用轉換器模式將數據從DataTable轉換為對象。 基本上,Translator類只有靜態(即類)方法,所以它是函數調用的集合。 我最初的方法是為每個對象實現構造函數,這些構造函數可以將DataTable行作為參數並創建與數據相對應的實例。

他說,微軟已經建議翻譯類,並提供更好的代碼模塊化。 我可以看到這一點,但與此同時,它似乎是一種非OO方法(盡管訪問者模式具有相似的特征)。

有沒有人使用過這種模式,你怎么看待它? 利弊?

C2.Com看來,轉換器模式似乎是訪問者模式的非OOP實現。 它注意到文章的結尾有一些缺點,包括在OOP語義中難以表達(但不是代碼)的事實,換句話說它會很好地工作但是如果你是的話可能沒有多大意義在代碼的其余部分使用純OOP。

我想你在談論實體翻譯 我認為這種情況下的翻譯自然是一種靜態方法。 它存在的地方是一個美學問題。 它也應該非常容易進行單元測試,因為它應該只依賴於它之間轉換的兩個數據結構。 聽起來像他們的“數據合同”的另一個名稱是DTO(數據傳輸對象)。

如果您可以在沒有任何外部依賴性的情況下執行映射,那么除了靜態方法之外,使用其他任何東西都沒有用處。

也許我錯過了什么,但為什么不只是使用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是更深入的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM