forked from steger/pr3-sose2026
36 lines
499 B
Go
36 lines
499 B
Go
package patterns
|
|
|
|
type Observer interface {
|
|
Update()
|
|
}
|
|
|
|
type Subject interface {
|
|
Register(o Observer)
|
|
Unregister(o Observer)
|
|
Notify()
|
|
}
|
|
|
|
type subject struct {
|
|
observers map[Observer]bool
|
|
}
|
|
|
|
func NewSubject() Subject {
|
|
return &subject{
|
|
observers: make(map[Observer]bool),
|
|
}
|
|
}
|
|
|
|
func (s *subject) Register(o Observer) {
|
|
s.observers[o] = true
|
|
}
|
|
|
|
func (s *subject) Unregister(o Observer) {
|
|
delete(s.observers, o)
|
|
}
|
|
|
|
func (s *subject) Notify() {
|
|
for o := range s.observers {
|
|
o.Update()
|
|
}
|
|
}
|