Go语言设计模式-观察者

观察者模式
观察者模式是一种行为设计模式 。 此模式允许一个实例(称为subject)将事件发布到其他多个实例(称为observer) 。 这些观察者订阅主题(在主题内部维护一个观察者列表) , 因此在主题发生任何更改时会收到事件通知 。
举个例子 。 在购物网站上 , 可能会有顾客对某个缺货商品感兴趣 。 这个问题有三种解决方法:
客户定期检查该商品是否有货
网站向客户推荐其他商品
客户只订阅他感兴趣的商品 , 并在商品到货时得到通知 。 多个客户可以订阅同一产品 。
【Go语言设计模式-观察者】第三种方法是最可行的 , 这就是观察者模式 。 观察者模式的主要组成部分是:
主题Subject:是发布事件的实例 , 提醒订阅者发生信息变动 。
观察者Observer:是订阅主题的实例 , 通过事件得到信息变动的通知 。
通常 , 先定义主题和观察者为接口 , 然后分别实现它们 。
Go语言设计模式-观察者
文章图片
以下是代码和UML的对照关系:
Go语言设计模式-观察者
文章图片
以下是subject.go的代码:
Go语言设计模式-观察者
文章图片
以下是item.go的代码:
Go语言设计模式-观察者
文章图片
以下是observer.go的代码:
Go语言设计模式-观察者
文章图片
以下是customer.go的代码:
Go语言设计模式-观察者
文章图片
以下是main.go的代码:
Go语言设计模式-观察者
文章图片


    推荐阅读