Есть ли проблемы с этим шаблоном проектирования: Main -> Graphics <-> Data?
Я публикую это в Lua и Codea, так как это то, что я использую, но я думаю, что это довольно общий вопрос.
Я рассматриваю общий дизайн шаблона для отображения графики, и я хотел бы знать, есть ли проблемы с ним.
Вот шаблон дизайна, который я рассматриваю:
setup()
метод в Main
класс рассказывает Graphics
класс для создания некоторых графических элементов: например, два квадрата и эллипс.
Graphics
Класс генерирует параметры, необходимые для каждого элемента, сохраняет их в виде таблицы и отправляет таблицу в Data
учебный класс.
Когда приложение начинает рисовать, draw()
функция в Main
говорит Graphics
класс для рисования объектов, которые были созданы.
Тогда Graphics
класс спрашивает Data
класс для возврата всех таблиц, которые он отправил во время setup()
и использует их для рисования элементов.
Main
команды Graphics
какие команды и запросы Data
, Я уверен, что это известная модель: с ней вообще связаны проблемы?
1 ответ
То, что вы делаете - по сути, модель-представление-контроллер, обычно используется в промышленности и разработке приложений. Он работает относительно хорошо, хотя ни одна парадигма программирования не лишена недостатков. При этом, MVC предназначен для больших команд, работающих над большими проектами. С логистической точки зрения невозможно, чтобы несколько человек работали вместе над одним проектом Codea, поэтому, учитывая, что вы работаете самостоятельно, я предполагаю, что проект будет небольшим или средним. Работая соло над такими проектами, прагматичный, интуитивно понятный подход - безусловно лучший вариант.
Использование MVC для чего-то подобного - это что-то вроде построения целой демократии с конгрессом / парламентом, главой государства и судебной системой только для того, чтобы управлять действиями одной семьи. Демократия - это хорошо, а надежная система выборов и сдержек и противовесов - единственный способ обеспечить бесперебойную работу системы. Однако в домашнем хозяйстве, хотя порядок и счастье все еще необходимо поддерживать, подход совершенно другой.
Для вас лучшее, что вы можете сделать, это подумать о том, как мысли структурированы в вашей голове. Вы думаете о кладе врагов как о едином объекте или как о совокупности автономных объектов? Считаете ли вы космический корабль идеальным математическим набором свойств или изображением, с которым пользователь взаимодействует на экране? Когда появляется экран паузы, экран игры все еще там, просто скрыт, или он перестал существовать и был заменен?
Кроме того, как вы структурируете идеи? Вы начинаете с широких категорий, углубляясь в мельчайшие детали, или у вас в голове яркий образ мыслей, для которого вы стремитесь построить мир? Ваша концепция программы состоит из обширной блок-схемы, которая погружается в реальность в определенных точках, или совокупности узлов, отправляющих сообщения друг другу? Все эти вопросы только вы можете ответить. Если вы естественно тяготеете к MVC, вы можете придерживаться его. Если вы прочитаете об этом в книге и решите, что, хотя вы и не поняли, почему это полезно, это должна быть какая-то волшебная пыльца, которую вы можете посыпать любым проектом, чтобы облегчить его, я бы настоятельно рекомендовал вам пересмотреть.
Удачного кодирования!
Кстати, я думаю, что этот вопрос немного лучше подходит для программистов Stack-Exchange, чем переполнение стека. Это тонкое различие, но переполнение стека предназначено для фактов, таких как исправления ошибок и алгоритмы, а для программистов - мнения о том, как писать программное обеспечение.