Отделение классов домена от классов модели Django

Итак, я завершил свой объектно-ориентированный анализ и дизайн веб-приложения, которое я создаю, и теперь приступаю к реализации. Были приняты дизайнерские решения для реализации системы с использованием Python и фреймворка веб-разработки Django.

Я хочу начать реализацию некоторых из моих классов сущностей предметной области, которые нуждаются в постоянстве. Кажется, что Django заставил бы меня реализовать их как классы, унаследованные от класса моделей Django, чтобы использовать Django ORM для сохранения. Однако это кажется слишком сильной связью между сущностями моего класса и механизмом сохранения. Что произойдет, если на каком-то этапе я захочу отказаться от Django и использовать другой фреймворк для веб-разработки или просто отказаться от ORM Django в качестве альтернативы? Теперь мне нужно переписать свои классы сущностей предметной области с нуля.

Так что было бы лучше реализовать мои классы предметной области как отдельные классы Python, инкапсулируя в них всю мою бизнес-логику, а затем использовать некоторый механизм (шаблон проектирования, такой как мост или адаптер или ???), чтобы делегировать постоянное хранение этих классов домена в Django ORM, например, через класс модели Django, который был соответствующим образом настроен для этого.

Есть ли у кого-нибудь предложения о том, как это сделать этот? Судя по всему, что я читал, люди просто реализуют свои доменные классы как классы, унаследованные от класса модели Django, и смешивают бизнес-логику внутри этого класса. Это не кажется хорошей идеей для последующих изменений, обслуживания, повторного использования и т. Д.

13
задан Ioan Alexandru Cucu 28 November 2013 в 10:26
поделиться