Сценарий:C# Generics/Design Patterns: Должен ли я использовать метод шаблона?
(Если кто-нибудь ответил/просмотреть мои вопросы в последнее время это будет несколько) познакомились
у меня есть 3 различных веб-сервисов, которые вскрывают набор объектов, которые имеют общность. Я написал классы-оболочки и логику преобразования, используя общие методы для изменения между промежуточными объектами и объектом службы.
У меня есть интерфейс для Webservice, пусть он будет называться IService для этого вопроса. У меня есть 3 класса реализации Service1Impl, Service2Impl и Service3Impl. Каждый из этих ссылок ссылается на другой веб-сервис и использует мои вышеупомянутые общие методы для преобразования между соответствующими объектами.
Они впрыскивают в мой класс ServiceWrapper во время выполнения с помощью конструктора (завод используется для создания соответствии с характеристиками имеющейся реализации из ISerivice
например:
_service = ServiceWrapper.GetServiceWrapper("2");
даст мне ServiceWrapper инстанцированный с Service2Impl.
(Dammit диаграммы будет Хелла полезно!)
ИТАК каждой реализации IService имеет метод для сакэ аргументы .. GetProperties:
public IProperty[] GetProperties(string item, IProperty[] properties)
{
Property[] props = ServiceObjectFactory.CreateProperties<Property>(properties);
Property[] result = _service.GetProperties(item, props);
return ServiceObjectFactory.CreateProperties(result);
}
Это выглядит немного запутанным (я думаю, что я собираюсь реорганизовывать имена).
В основном то, что происходит это:
Вызов этой функции из ServiceWrapper производится с посредническими объектами (IProperty) (как вы можете видеть из параметров).
Объекты-посредники преобразуются в объекты недвижимости, которые являются специфическими для обслуживания.
Результат возвращается как служебный объект недвижимости.
Результат преобразуется в промежуточные объекты перед тем, как быть отправлен обратно в ServiceWrapper.
Теперь этот код будет точно таким же для Service1Impl, Service2Impl и Service3Impl. Кроме того, что используемые типы различны.
Может ли кто-нибудь подумать о способе сделать это, чтобы у меня не было того же кода 3 раза?
N.B: Это не относится ко всем методам в каждой реализации. Просто большинство из них.
Это то, о чем я думал. Благодарю. – 2008-10-21 14:02:16