package service import "log/slog" // NotificationRepository — интерфейс репозитория уведомлений для NotificationService. type NotificationRepository interface { // методы, которые NotificationService использует из репозитория уведомлений } // NotificationUserService — интерфейс сервиса пользователей для NotificationService. type NotificationUserService interface { // методы, которые NotificationService использует из сервиса пользователей } // NotificationEventSubscriber — интерфейс для подписки на события. type NotificationEventSubscriber interface { Subscribe(event string, handler func()) } // NotificationService — интерфейс сервиса уведомлений. // Структура неэкспортируемая — создать объект можно только через NewNotificationService. type NotificationService interface{} // notificationService — сервис уведомлений. type notificationService struct { notificationRepo NotificationRepository userService NotificationUserService events NotificationEventSubscriber } // NewNotificationService создаёт сервис уведомлений. func NewNotificationService( notificationRepo NotificationRepository, userService NotificationUserService, events NotificationEventSubscriber, ) NotificationService { slog.Info("сервис уведомлений создан") return ¬ificationService{ notificationRepo: notificationRepo, userService: userService, events: events, } }