Существуют ли какие-либо шаблоны / решения для решения проблемы с вызовом API, при котором в одном сценарии может потребоваться вернуть полный граф объектов (скажем, объект manager
и все его отношения с персоналом), а в другом - просто вернуть один manager
объект?
Идеи, которые мы сейчас распространяем:
- Множество методов
В приведенном выше примере у вас будет один метод с именем get_manager()
, а другой с именем get_manager_deep()
.
- Множество объектов
Аналогично 1. У вас есть два метода, один возвращает manager
, а другой возвращает manager_with_staff
- API, управляемый данными
Здесь метод принимает какой-то запрос (возможно, XML), который точно определяет, какой тип объекта вы хотите вернуть, и метод возвращает, возможно, динамический объект, соответствующий запросу.
NB. Эти примеры очень упрощены, в действительности методам может потребоваться указать, откуда берутся части данных - ActiveDirectory / DB.
Кто-нибудь сталкивался с такими проблемами?
РЕДАКТИРОВАТЬ - Основная движущая сила проекта - иметь чистый и простой (но эффективный) API и объектную модель. Таким образом, некоторые из приведенных выше примеров приводят к потенциально большим (и, возможно, запутанным) графам объектов. Наличие слишком большого количества (возможно, ненужных) методов / классов может быть проблемой обслуживания.