Я хотел бы знать, как лучше спроектировать удаление объекта с помощью триггеров удаления многих зависимых объектов.
Вот пример.Есть класс работодателя.Когда работодатель удаляется, все его задания, счета-фактуры удаляются.Когда работа удаляется, выбор ее категории также удаляется.И так далее.Таким образом, вы можете видеть, что удаление Employer вызывает удаление еще многих объектов.Проблема в том, что мне нужно передать много аргументов, необходимых для удаления зависимых объектов, методу delete в классе Employer.
Вот упрощенный пример.Представьте себе класс Main.Когда основной объект удаляется, объекты Dep1, Dep2 также должны быть удалены.Когда Dep1 удаляется, Dep11 также должен быть удален.Если методы удаления выглядят так: Dep1.delete (arg1), Dep2.delete (arg2), Dep11.delete (arg3), то метод удаления в Main должен выглядеть следующим образом: Main.delete (arg1, arg2, arg3),Ты видишь?Чем больше объектов зависит от Main - тем больше аргументов потребуется для удаления.
Я также должен указать, что меня интересует удаление из базы данных, то есть удаление в смысле «бизнес-логики».Я даже не удаляю «удаленные» объекты в методе удаления.
Какие варианты я рассмотрел:
- группирование аргументов, необходимых для удаления, в отдельный объект.Я просто не вижу, как все эти аргументы можно сгруппировать.Они просто не принадлежат друг другу.Например, если необходимы Invoice_searcher и Job_searcher - зачем им объединяться в одном объекте?И что это может быть за объект?
- перемещение удаления зависимых объектов из метода delete в классе Employer.В этом случае явный отказ от вызова методов удаления для дочерних элементов приведет к несогласованности состояния системы.Я бы хотел этого избежать.