Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AbsDuckFactory ¶
type AbsDuckFactory interface { CreateMallardDuck() QuackAble CreateRedheadDuck() QuackAble CreateDuckCall() QuackAble CreateRubber() QuackAble }
第三次需求变更为了防止调用者忘了建立叫声统计类 我们这里使用抽象工厂,开闭原则中对扩展是开放的,所以我们将抽象工厂也扩展到修饰器中
type Creak ¶
type Creak interface { Creak() QuackObservable }
第一次需求变动,现在农场多了一些鹅,鹅也想quack()但是鹅只有creak() 采用适配器模式 适配模式
type DuckCall ¶
type DuckCall struct {
// contains filtered or unexported fields
}
func (*DuckCall) NotifyObservers ¶
func (d *DuckCall) NotifyObservers()
func (*DuckCall) RegisterObserver ¶
func (*DuckCall) RemoveObserver ¶
type DuckDoctor ¶
type DuckDoctor struct { }
具体的订阅接收者
func (DuckDoctor) Update ¶
func (d DuckDoctor) Update(observable QuackObservable)
type DuckFactory ¶
type DuckFactory struct { }
鸭子工厂
func (*DuckFactory) CreateDuckCall ¶
func (q *DuckFactory) CreateDuckCall() QuackAble
func (*DuckFactory) CreateMallardDuck ¶
func (q *DuckFactory) CreateMallardDuck() QuackAble
func (*DuckFactory) CreateRedheadDuck ¶
func (q *DuckFactory) CreateRedheadDuck() QuackAble
func (*DuckFactory) CreateRubber ¶
func (q *DuckFactory) CreateRubber() QuackAble
type Flock ¶
type Flock struct {
// contains filtered or unexported fields
}
func (*Flock) NotifyObservers ¶
func (f *Flock) NotifyObservers()
func (*Flock) RegisterObserver ¶
func (*Flock) RemoveObserver ¶
type Goose ¶
type Goose struct {
// contains filtered or unexported fields
}
被适配的类
func (*Goose) NotifyObservers ¶
func (g *Goose) NotifyObservers()
func (*Goose) RegisterObserver ¶
func (*Goose) RemoveObserver ¶
type GooseAdapter ¶
type GooseAdapter struct {
Creak
}
type MallardDuck ¶
type MallardDuck struct {
// contains filtered or unexported fields
}
func (*MallardDuck) NotifyObservers ¶
func (m *MallardDuck) NotifyObservers()
func (*MallardDuck) RegisterObserver ¶
func (m *MallardDuck) RegisterObserver(observer Observer)
func (*MallardDuck) RemoveObserver ¶
func (m *MallardDuck) RemoveObserver(observer Observer)
type ObservableAssist ¶
type ObservableAssist struct {
// contains filtered or unexported fields
}
具体的发布者
func (*ObservableAssist) NotifyObservers ¶
func (o *ObservableAssist) NotifyObservers()
func (*ObservableAssist) RegisterObserver ¶
func (o *ObservableAssist) RegisterObserver(observer Observer)
func (*ObservableAssist) RemoveObserver ¶
func (o *ObservableAssist) RemoveObserver(observer Observer)
type Observer ¶
type Observer interface {
Update(observable QuackObservable)
}
第五次需求变更,我们想要做一个提醒,当任何一个鸭子或鹅叫的时候 毫无疑问,这时候应该采取观察者模式 订阅接收者接口
type QuackAble ¶
type QuackAble interface { QuackObservable // contains filtered or unexported methods }
type QuackCounter ¶
type QuackCounter struct {
// contains filtered or unexported fields
}
第二次变动,统计叫声 采用修饰器模式
func (*QuackCounter) NotifyObservers ¶
func (q *QuackCounter) NotifyObservers()
func (*QuackCounter) RegisterObserver ¶
func (q *QuackCounter) RegisterObserver(observer Observer)
func (*QuackCounter) RemoveObserver ¶
func (q *QuackCounter) RemoveObserver(observer Observer)
type QuackObservable ¶
type QuackObservable interface { RegisterObserver(observer Observer) RemoveObserver(observer Observer) NotifyObservers() }
订阅发布者接口
type RedheadDuck ¶
type RedheadDuck struct {
// contains filtered or unexported fields
}
func (*RedheadDuck) NotifyObservers ¶
func (r *RedheadDuck) NotifyObservers()
func (*RedheadDuck) RegisterObserver ¶
func (r *RedheadDuck) RegisterObserver(observer Observer)
func (*RedheadDuck) RemoveObserver ¶
func (r *RedheadDuck) RemoveObserver(observer Observer)
type RubberDuck ¶
type RubberDuck struct {
// contains filtered or unexported fields
}
func (*RubberDuck) NotifyObservers ¶
func (r *RubberDuck) NotifyObservers()
func (*RubberDuck) RegisterObserver ¶
func (r *RubberDuck) RegisterObserver(observer Observer)
func (*RubberDuck) RemoveObserver ¶
func (r *RubberDuck) RemoveObserver(observer Observer)
Click to show internal directories.
Click to hide internal directories.