Возможно, вы могли бы сделать что-то с простым классом-оболочкой для объединения, содержащего супер-набор данных, необходимых для каждого случая. Это будет содержать указатель на общие стратегии объекты, содержащие код для разных типов поведения. Таким образом, кошка является объектом класса PolyAnimal с видамиName = «cat», PredatorFeedingStrategy и т. Д.
Вероятно, лучшим способом решения основной проблемы является создание соответствующих пользовательских распределителей для более естественного дизайна.
Это отличный вопрос, но я не уверен, что StackOverflow - это то место, где его можно задать, так как нет четкого ответа. Тем не менее, я пытаюсь дать ему шанс.
Django также следует шаблону проектирования MVC, но наименование немного отличается.
Это часто упоминается как MTV вместо MVC. Но это не конец истории, потому что многие люди считают плохой идеей помещать слишком много бизнес-логики в представления по таким причинам, как тестируемость и возможность повторного использования. Существует два распространенных подхода к этой проблеме:
Лично я работал с обоими, и у меня был лучший опыт с сервисным подходом.
Эквивалентом DAO в Django, вероятно, является Django ORM. Обратите внимание, что это действительно только уровень абстракции для поддерживаемых реляционных баз данных. Если вы хотите использовать другой источник данных, такой как NoSQL DB или REST API, вы должны свернуть свое собственное решение или искать сторонние пакеты.
Java может иметь только один открытый класс на файл, и они должны иметь одинаковые имена. В Python такого ограничения нет, поэтому рекомендуется использовать несколько классов на файл (файлы .py называются модулями). Если модуль / файл становится слишком большим, вы можете превратить его в пакет (каталог с файлом __init__.py
), содержащий несколько модулей (и / или подпакетов).
Различия между приложением и проектом могут сбивать с толку, поэтому я написал целую статью о схеме именования Django . Приложение Django представляет собой пакет Python, но обычно они организованы по доменам. Например. в системе управления библиотекой ваш проект library
может иметь приложение catalogue
для управления запасами и приложение checkout
для управления процессом извлечения книг.
И наконец, если вы специально нацелены на создание REST API, я настоятельно рекомендую вам взглянуть на Django REST Framework .