java设计模式观察者模式_Java设计模式(9)——观察者模式
一、觀察者模式定義
Observer模式是行為模式之一,它的作用是當一個對象的狀態發生變化時,能夠自動通知其他關聯對象,自動刷新對象狀態。
Observer模式提供給關聯對象一種同步通信的手段,使某個對象與依賴它的其他對象之間保持狀態同步。
二、觀察者模式的結構
Subject(被觀察者):被觀察的對象。當需要被觀察的狀態發生變化時,需要通知隊列中所有觀察者對象。Subject需要維持(添加,刪除,通知)一個觀察者對象的隊列列表。
ConcreteSubject:被觀察者的具體實現。包含一些基本的屬性狀態及其他操作。
Observer(觀察者):接口或抽象類。當Subject的狀態發生變化時,Observer對象將通過一個callback函數得到通知。
ConcreteObserver:?觀察者的具體實現。得到通知后將完成一些具體的業務邏輯處理。
三、觀察者模式的特點
偵聽事件驅動程序設計中的外部事件
偵聽/監視某個對象的狀態變化
發布者/訂閱者(publisher/subscriber)模型中,當一個外部事件(新的產品,消息的出現等等)被觸發時,通知郵件列表中的訂閱者
四、觀察者模式的缺點
待整理
五、Demo
被觀察者
/**
* @description:
* @auther: yangsj
* @created: 2019/3/21 17:25
*/
public class Blog extends Observable {
public void publishArtical(){
Artical artical = new Artical();
artical.setTitle("title");
artical.setCoutent("countent");
this.setChanged();
this.notifyObservers(artical);
}
}
觀察者
/**
* @description:
* @auther: yangsj
* @created: 2019/3/21 17:28
*/
public class User implements Observer {
@Override
public void update(Observable o, Object arg) {
Artical artical = (Artical)arg;
System.out.println("title"+artical.getTitle() + " countent" + artical.getCoutent());
}
}
消息基類
package com.nchu.observer;
/**
* @description:
* @auther: yangsj
* @created: 2019/3/21 17:24
*/
public class Artical {
public String title;
public String coutent;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getCoutent() {
return coutent;
}
public void setCoutent(String coutent) {
this.coutent = coutent;
}
}
客戶端調用
/**
* @description:
* @auther: yangsj
* @created: 2019/3/21 17:30
*/
public class APP {
@Test
public void Test(){
Blog blog = new Blog();
blog.addObserver(new User());
blog.publishArtical();
}
}
六、UML類圖
總結
以上是生活随笔為你收集整理的java设计模式观察者模式_Java设计模式(9)——观察者模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 链表的基本操作 java_JAVA实现单
- 下一篇: java计算时间跨度_请问如何使用Jav