В одной компании, в которой я работал, у них был хороший дизайн, где служба называлась контроллером, и контроллер мог вызывать другой уровень, который я не могу вспомнить, но тогда он вызывал бы DAO.
Таким образом, у них был уровень доступа, который мог вызывать несколько DAO для выполнения функций более высокого порядка, поэтому, если вы хотите выполнить заказ, может потребоваться вызов нескольких таблиц и, возможно, нескольких систем, поэтому контроллер будетвызовите метод doOrder
.
Это хороший дизайн, поскольку он сохраняет хорошее чувство разделения и упрощает модульное тестирование, поскольку вы можете протестировать каждый слой.
Если ваша служба способначтобы вызывать несколько DAO, тогда модульное тестирование может быть сложнее, поскольку вы усложняете уровень обслуживания.
Итак, когда вы разрабатываете свои уровни, посмотрите, имеет ли смысл создавать новые слои для упрощения проектов,может обнаруживать ошибки или предотвращать ошибки.
ОБНОВЛЕНИЕ:
Недостающий слой был координатором, и правила былиКаждый координатор имел дело с одним DAO и мог выполнять любые необходимые преобразования, но в контроллере была бизнес-логика.Таким образом, координатор может поговорить с любым другим координатором, получить информацию, и эти координаторы отправятся в DAO.