У меня есть несколько моделей в моем Django проекте.Большинство из этих моделей довольно просты, но некоторые из них являются точкой входа в сложные структуры данных.
Например, модель Reservation
имеет несколько моделей детализации через отношения внешнего ключа (ReservationHotel
, ReservationTransfer
, ReservationTour
, ReservationRountrip
, ReservationService
), и каждая из этих деталей имеет внешнюю связь с моделями продуктов (Hotel
, Transfer
, Tour
, Roundtrip
, Services
).
Я знаю, что хорошей практикой является держать модели изолированными от других моделей, чтобы они не знали деталей о них.В связи с этим я реализую контроллеры для управления сложными структурами данных, подобными описанным выше.
Я хочу, чтобы эти контроллеры реализовали шаблоны проектирования , и я считаю, что правильная для Reservations
должнабыть шаблоном Proxy , основанным на его описании в википедии:
Какие проблемы может решить шаблон проектирования Proxy?
Необходимо контролировать доступ к объекту,
Дополнительные функции должны быть предоставлены при доступе к объекту.
Например, при доступе к чувствительным объектам должна быть возможность проверить, имеют ли клиенты необходимые права доступа.
Какое решение описывает шаблон проектирования Proxy?
Определите отдельный объект Proxy, который можно использовать вместо другого объекта (Subject), а
реализует дополнительные функции для управления доступом к этому предмету.
В моем случае я хочу создать прокси для модели Reservation
, который будет обрабатывать также информацию для своих внешних ссылок, поэтому модель Reservation
сохранит свою инкапсуляцию, но прокси будет управлять всей связанной информациейк Reservartion instance.
Это правильное использование шаблона Proxy ?