Не могу понять правильную область действия сервисов в web приложении. Вот у нас есть сервис, логично, как мне кажется, предположить, что его можно обернуть в другой класс, добавлять обсерверы, или стратегии. Возможно выполнять действия в зависимости от привилегий. Но где делать всё это? Это же уровнем выше сервиса, но при этом логика приложения - значит это не зона действий контроллера.
У меня в голове 2 выбора, а вы как считаете?
Делать ещё один слой между сервисом и контроллером. Но пока нигде такое не встречал, но и опыта у меня мало. Везде вижу controller-service-repository.
Делать дополнительные методы в сервисе, которые используют другие методы. Например есть метод getById() внутри которого происходит notify(). Но ведь обсерверы надо ещё забить в класс. Значит нужно ещё делать метод SetObserversForGetById? Ну это же вроде бред.
Ещё интереснее, если взять ситуацию, что один метод вызывается в разных местах с разным количеством наблюдателей.
Ну или делать attach($observer) в контроллере...
Сборка персонального компьютера от Artline: умный выбор для современных пользователей