設計模式——觀察者模式
阿新 • • 發佈:2018-03-31
param body 抽象 logs ring 依賴 ret rip system
- 什麽是觀察者模式
觀察者模式有叫做發布訂閱模式,是對象間一種一對多的依賴關系,是的每當一個對象改變狀態時,則所有依賴於他的對象都會得到通知並自動更新。這其中過程就好比訂閱微信公眾號,公眾號中若有新消息產生就會及時通知用戶並更新。
抽象觀察者
public interface Observer { public void update(String message); }
具體觀察者(ConcrereObserver)
public class WeixinUser implements Observer { // 微信用戶名 private String name; public WeixinUser(String name) { this.name = name; } @Override public void update(String message) { System.out.println(name + "-" + message); } }
抽象被觀察者(Subject)
public interface Subject { /** * 增加訂閱者 * @param observer */ public void attach(Observer observer); /** * 刪除訂閱者 * @param observer */ public void detach(Observer observer); /** * 通知訂閱者更新消息 */ public void notify(String message); }
具體被觀察者(ConcreteSubject)
public class SubscriptionSubject implements Subject { private List<Observer> weixinUserlist = new ArrayList<Observer>(); @Override public void attach(Observer observer) { weixinUserlist.add(observer); } @Override public void detach(Observer observer) { weixinUserlist.remove(observer); } @Override public void notify(String message) { for (Observer observer : weixinUserlist) { observer.update(message); } } }
- 觀察者模式優點與缺點
優點:
1.觀察者與被觀察者之間抽象耦合,易拓展
2.簡歷一套出發機制,單一職責
- 使用場景
1.時間多級觸發(一對多)
2.信息交換跨系統場景(qmq)
設計模式——觀察者模式