Есть ли проблемы с этим шаблоном проектирования: 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, чем переполнение стека. Это тонкое различие, но переполнение стека предназначено для фактов, таких как исправления ошибок и алгоритмы, а для программистов - мнения о том, как писать программное обеспечение.

Другие вопросы по тегам