Шаблон переводчика - PullRequest
       22

Шаблон переводчика

5 голосов
/ 23 декабря 2009

В предыдущей работе мой менеджер предложил использовать шаблон Translator для преобразования данных из DataTable в объекты. По сути, класс Translator имеет только статические (то есть класс) методы, поэтому он представляет собой совокупность вызовов функций. Мой первоначальный подход состоял в том, чтобы реализовать конструкторы для каждого объекта, которые могли бы принять строку DataTable в качестве аргумента и создать экземпляр, который соответствует данным.

Он сказал, что класс Translator был предложен Microsoft и обеспечил лучшую модульность кода. Я вижу этот момент, но в то же время он выглядит как не ооо-подход (хотя шаблон Visitor имеет схожие характеристики).

Кто-нибудь из вас использовал этот паттерн, и что вы о нем думаете? плюсы и минусы?

Ответы [ 4 ]

4 голосов
/ 23 декабря 2009

Я думаю, вы говорите о Entity Translator . Я думаю, что переводчик в этом сценарии, естественно, статический метод. Где он живет, это вопрос эстетики. Он также должен быть достаточно легко модульным, так как он должен зависеть только от двух структур данных, между которыми он переводится. Это звучит как другое название их «контракта данных» - DTO (Data Transfer Object).

4 голосов
/ 23 декабря 2009

Из C2.Com представляется, что шаблон Translator не является реализацией OOP шаблона посетителя. В конце статьи отмечены некоторые недостатки, в том числе тот факт, что в семантике ООП трудно выразить (но не кодировать), иными словами, он будет работать нормально, но может не иметь большого смысла, если используя чистый ООП для остальной части вашего кода.

0 голосов
/ 23 декабря 2009

Может быть, я что-то упустил, но почему бы просто не использовать 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 - более подробная информация об этом.

0 голосов
/ 23 декабря 2009

Если вы можете выполнить сопоставление без каких-либо внешних зависимостей, тогда нет смысла использовать что-либо, кроме статического метода.

...