37 lines
760 B
Go
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
|
|
}
|