Как управлять суперклассом с очень большим количеством подклассов? - PullRequest
1 голос
/ 19 августа 2011

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

Простой пример, такая игра, как Minecraft - все является блоком, поэтому существует явный суперкласс.Но каждый тип блока имеет свои собственные значения атрибутов для плотности, текстуры, веса, вероятности появления и т. Д. И т. Д., А также многие из них, которые зависят от подкласса.Итак, если в игре было несколько десятков типов блоков, как вы управляете этим «правильным», ООП способом?

Есть ли лучшая структура данных для использования, чем чистые классы?Если это просто тонны числовых атрибутов, вы можете использовать что-то более простое (даже просто файл конфигурации), но есть вероятность, что для многих подклассов также будет код, специфичный для всех.

NB Так какэто немного более общий вопрос, и я не пытался его реализовать, я не уверен, что он лучше подходит для programmers.stackexchange.com .Если это так, дайте мне знать в комментарии, и я закрою вопрос и задам его там.Я также не уверен, как пометить это, так что не стесняйтесь редактировать!

1 Ответ

1 голос
/ 19 августа 2011

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

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

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