package events import "log/slog" // EventBus — интерфейс шины событий приложения. // Чистый pub/sub брокер без внешних зависимостей. // Сервисы сами публикуют события и подписываются на них. // Структура неэкспортируемая — создать объект можно только через NewEventBus. type EventBus interface { Publish(event string) Subscribe(event string, handler func()) } // eventBus — реализация шины событий. type eventBus struct{} // NewEventBus создаёт шину событий. func NewEventBus() EventBus { slog.Info("шина событий создана") return &eventBus{} } // Publish публикует событие. func (b *eventBus) Publish(event string) { slog.Info("событие опубликовано", "event", event) } // Subscribe подписывается на событие. func (b *eventBus) Subscribe(event string, handler func()) { slog.Info("подписка на событие", "event", event) }