go_dreamfactory/lego/sys/event/v2/event.go
2022-07-25 18:40:00 +08:00

37 lines
760 B
Go

package event_v2
// 事件接口
type IEvent interface {
Attach(listeners ...Listener) // 事件添加观察者
Observers() []Listener // 获取所有的观察者
//Detach(listener Listener)
DetachIndexOf(index int)
}
type Event struct {
listeners []Listener
}
func (e *Event) Attach(listeners ...Listener) {
e.listeners = append(e.listeners, listeners...)
}
//func (e *Event) Detach(listener Listener) {
// for k := range e.listeners {
// if listener == e.listeners[k] {
//
// }
// }
//}
// 移除某个监听器
func (e *Event) DetachIndexOf(index int) {
if len(e.listeners) > index && index > 0 {
e.listeners = append(e.listeners[:index], e.listeners[index+1:]...)
}
}
func (e *Event) Observers() []Listener {
return e.listeners
}