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

文章图片
以下是代码和UML的对照关系:

文章图片
以下是subject.go的代码:

文章图片
以下是item.go的代码:

文章图片
以下是observer.go的代码:

文章图片
以下是customer.go的代码:

文章图片
以下是main.go的代码:

文章图片
推荐阅读
- 小英说军事|如何看待中国的军事实力?日本专家泼了盆凉水,语言刻薄但很真实
- 心理学:减少不必要的语言冲突,让时间给你的生命增添无限活力
- 一夏|心理学:减少不必要的语言冲突,让时间给你的生命增添无限活力
- 观察者网|现实版“谍战剧”!公司被GPS定位器窃听损失千万
- 娱乐观察者|张彬彬穿牛仔外套,眉眼清俊,网友:想把他的口罩扯下来
- 娱乐观察者|喜欢休闲西服千万不要错过这个颜色,黄轩穿卡其西服演绎不同绅味
- 这才是“台独”听得懂的语言?解放军大举演练,军机出动震撼岛内
- 央视专访刘超阳:语言优势让自己学到很多
- 观察者网独家视频|美海军官方刊物:解放军很可能明年初对台动武,3天解决问题
- 原创 追星语言原来都一样:王一博收到罗西签名照,激动到发出一串尖叫
