观察者模式
某厂面试归来,发现自己落伍了!>>> 虽然,工作中不使用任何设计模式,写一个包含1000行代码的函数,并不会有什么问题。但我现在开始觉得,如果在写代码前能思考、套用一些模式的话,我们的思考会更有深度。 开发中经常会遇到的场景:在一个函数体中,我们总是需要在完成核心功能之后,再附加完成一些别的功能。 拿电子书的场景举例,在用户付款成功后,核心的操作就是:交付权益。但我们往往还会有别的附加操作,比如: 通知推荐平台,上报用户购买的数据,用于后续个性化推荐 通知结算平台、上报用户购买的数据,用于公司收支结算 很多人都习惯在函数末尾加上一堆这样的逻辑,也包括我自己。但其实,我们可以把代码写的更优雅。 观察者模式非常适合这种通知的场景,我们首先定义观察主体,它提供了3个方法,注册观察者、删除观察者、通知所有注册的观察者。 type Subject struct { List map[string]Observer } func (subject *Subject) Attach (obj Observer, identify string) { subject.List[identify] = obj } func (subject *Subject) Del ( identify string) { delete(subject.List[identify]) } // 通知所有观察者