Фабрика и Стратегические модели

Не все модели данных отображаются приятно на прикладные объекты. Если бы отображение не относительно просто, я пропустил бы Платформу Объекта. Вы будете делать стойки на руках заставлять его работать без любого ясного преимущества.

у Anders Hejlsberg были некоторые интересные комментарии об объектном/реляционном отображении здесь .

5
задан Austin Salonen 30 September 2009 в 15:25
поделиться

4 ответа

Это определенно комбинация Стратегии и Фабрики - но я не думаю, что это плохо. Шаблоны предназначены для объединения и использования друг с другом.

Трудно сказать, не глядя на этот план дизайна в контексте, хороший это дизайн или плохой. Имея только ту информацию, которую вы здесь предоставили, все может пойти в любом направлении.

Кажется, ваша голова находится в нужном месте, но позвольте мне просто предупредить вас: не растягивайтесь слишком сильно, чтобы отделить вашего клиента от ваша стратегия. Я делал это в прошлом, и это привело к запутанному беспорядку, который был бы намного проще, если бы я просто разрешил небольшую связь между двумя частями моего кода. Разделение - это хорошо, но попытки сохранить идеальное разделение могут привести к плохому коду и разного рода проблемам.

9
ответ дан 13 December 2019 в 19:30
поделиться

Мы использовали это множество различных сценариев синтаксического анализа, и он определенно работает. Я написал об этом в блоге с помощью примера кода: http://www.herrodius.com/blog/136

Уловка, которую мы используем, заключается в том, чтобы дать интерфейсу стратегии дополнительный метод canProcess, который просто возвращает логическое значение если стратегия способна работать с данными. Затем фабрика просто перебирает все свои стратегии и спрашивает каждую, может ли она работать с данными. Если есть возможность, мы возвращаем эту стратегию или выполняем ее.

2
ответ дан 13 December 2019 в 19:30
поделиться

В сценарии, который вы изображаете, на самом деле не было бы необходимости в контексте, который вместо этого был бы заменен фабрикой, которую вы хотите. Шаблон стратегии в этом случае - это просто накладные расходы и ненужный уровень сложности. Все, что вам нужно, - это интерфейс или абстрактный класс, реализации и Factory или Proxy для получения реализаций.

0
ответ дан 13 December 2019 в 19:30
поделиться

Анни комментирует мои мысли:

1) Есть Сервис - Синглтон. 2) Он содержит ссылку на класс DAO - он тоже синглтон. 3) В DAO есть метод, который извлекает ResultSet: ResultSet rs = ps.executeQuery (); Я хотел бы создать соответствующую стратегию внутри DAO для обработки этого набора результатов. Я не могу передать эту стратегию в конструктор DAO, потому что она специфична для входящего запроса. Передача его в конструктор сделает его одинаковым для всех входящих запросов. Поэтому я решил создать Factory внутри DAO (экземпляр объекта DAO) и внутри метода я собираюсь создать соответствующую стратегию (на основе запроса - локальный объект) из фабрики и использовать ее для обработки набора результатов.

На ваш взгляд, это решение хорошее?

0
ответ дан 13 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: