暗影之拳

浅谈设计模式(java)——从lol来看观察者模式

懵懂的女人 提交于 2020-02-22 01:00:06
一:身边的观察者模式 传统的报纸和杂志的订阅就是一种观察者模式: 报社的业务就是出版报纸 向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来。只要你是他们的订户,你就会一直收到新报纸来。 当你不想再看报纸的时候,取消订阅,他们就不会再送新报纸来。 只要报社还在运营,就会有人(或单位)向他们订阅报纸或取消订阅报纸。   二:什么是观察者模式 由报社和订报人的关系可以看出:出版者+订阅者 = 观察者模式 观察者模式 :定义了对象之间的一对多依赖,当一个对象改变状态时,它所有的依赖者都会收到通知并自动更新。 定义观察者模式 《interface》Subject:主题接口,对象使用此接口注册为观察者,或者把自己从观察者中删除。 ConcreteSubject:具体主题,实现了主题接口,除了注册和撤销方法之外,具体主题还实现了notifyObservers(),此方法用于在状态改变时更新所有当前观察者。 《interface》Observer:观察者接口,这个接口只有update()一个方法,当主题状态改变时它被调用。 Observer:具体观察者,必须注册具体主题,以便接受更新。 当两个对象之间松耦合,他们依然可以交互,但是不太清楚彼此的细节。观察者模式提供了一种对象涉及,让主题和观察者之间松耦合 三:下面我拿lol游戏中的实景来写段代码,体现游戏中的观察者模式(为了更好的理解