Шаблоны: движок рендеринга, позволяющий интегрировать редактор? - PullRequest
0 голосов
/ 31 июля 2009

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

Сценарий

Иметь приложение, которое рисует «простые» линии на экране. Идеально заключенный в «движок рендеринга», который я могу упаковать в Silverlight, демонстрационные приложения WPF и т. Д.

Мне также требуется приложение-редактор, которое использует движок рендеринга для выполнения большей части отображения, однако предоставляет дополнительные функции, такие как контрольные точки для перемещения линий по экрану и диалоговые окна для изменения цвета линий и т. Д.

Цель

Чтобы механизм визуализации был специфицирован и эффективен. Редактор должен иметь возможность «добавить» дополнительную функциональность (то есть отображение контрольных точек) в объекты, используемые механизмом визуализации, или в сам механизм визуализации. Я не хочу кодировать какой-либо специфический для редактора код в движок рендеринга.

Мои мысли пока

Я подумываю об использовании шаблона инкапсуляции / шаблона для объектов, которые будут использоваться механизмом рендеринга, так или иначе позволяя приложению-редактору предоставлять класс для объекта, который «привязывает» функциональность к контрольным точкам ( и, например, обработка событий для перемещения контрольных точек).

Мне нравится эта идея в том, что движку рендеринга никогда не нужно знать о среде, в которой он работает. Редактор может быть значительно изменен без необходимости менять движок рендеринга (надеюсь).

Но ....

Возможно, я ошибаюсь, если кто-то может увидеть какие-либо подводные камни или если у них есть опыт поиска более эффективных способов решения этой проблемы, я бы с удовольствием их услышал!

Ответы [ 2 ]

1 голос
/ 31 июля 2009

Я согласен с Чарли, что вы должны начать с простого прототипа проекта и расширять его по мере необходимости (именно так я начал с моего движка рендеринга карт ). Я могу дать вам несколько советов:

  • Отделите механизм рисования от остальной части кода ( вот пример как ). Под механизмом рисования я подразумеваю код, который фактически рисует что-то на экране / растровом изображении. Он должен потреблять примитивы рисования, а не некоторые объекты более высокого уровня. Таким образом, вы сможете легко переключать механизм рисования (пример: SVG, PDF, GDI, WPF ...)
  • Если вы хотите иметь редактор, один из полезных шаблонов - это Шаблон состояния
1 голос
/ 31 июля 2009

Хорошо, стреляй, это внушительное количество раздумий.

Моя философия всегда была, используйте шаблон проектирования , когда вам нужно использовать один . В противном случае вы можете стать астронавтом архитектуры , разрабатывающим грандиозные схемы совершенно бесплатно. Хорошо, что вы думаете о дизайне до разработки, но на самом деле, сколько вы можете знать о проекте до того, как какой-либо код был написан? Просто ни о чем. И если вы навязываете себя шаблону до того, как какой-либо код был написан, вы можете в итоге заклинить квадратный колышек в круглое отверстие на весь жизненный цикл приложения.

Мой вам совет: сначала напишите прототип. Быстро и грязно. Нет реального дизайна; просто сделай скелет, который ходит. Учитесь на этом. Если вы подумали о лучшем способе, откажитесь от оригинала и перепроектируйте новый. Используйте шаблоны проектирования, которые имеют смысл при добавлении функциональности , а не ради добавления функциональности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...