小編給大家分享一下Java如何實現回調函數與觀察者模式,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創新互聯從2013年成立,先為潁東等服務建站,潁東等地企業,進行企業商務咨詢服務。為潁東企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
具體介紹和實現代碼如下。
觀察者模式(有時又被稱為發布(publish )-訂閱(Subscribe)模式、模型-視圖(View)模式、源-收聽者(Listener)模式或從屬者模式)是軟件設計模式的一種。在此種模式中,一個目標物件管理所有相依于它的觀察者物件,并且在它本身的狀態改變時主動發出通知。這通常透過呼叫各觀察者所提供的方法來實現。此種模式通常被用來實現事件處理系統。
當一個抽象模型有兩個方面, 其中一個方面依賴于另一方面。將這二者封裝在獨立的對象中以使它們可以各自獨立地改變和復用。
當對一個對象的改變需要同時改變其它對象, 而不知道具體有多少對象有待改變。
當一個對象必須通知其它對象,而它又不能假定其它對象是誰。換言之, 你不希望這些對象是緊密耦合的。
其實觀察者模式同前面講過的橋梁、策略有著共同的使用環境:將變化獨立封裝起來,以達到最大的重用和解耦。觀察者與后兩者不同的地方在于,觀察者模式中的目標和觀察者的變化不是獨立的,而是有著某些聯系。
在Java中通過Observable類和Observer接口實現了觀察者模式。一個Observer對象監視著一個Observable對象的變化,當Observable對象發生變化時,Observer得到通知,就可以進行相應的工作。
package com.demo.test; import java.util.Observable; import java.util.Observer; //觀察者模式里面目標類維護了所有觀察者的引用,而回調里面只是維護了一個引用 public class ObserverCallbackDemo { // 觀察者A static class ConcreteObserverA implements Observer { @Override public void update(Observable o, Object arg) { System.out.println("ConcreteObserverA update"); } } // 觀察者B static class ConcreteObserverB implements Observer { @Override public void update(Observable o, Object arg) { System.out.println("ConcreteObserverB update"); } } // 被觀察對象 static class ConcreteObservable extends Observable { public void changeValue() { //protected方法只能在子類被調用 setChanged(); notifyObservers(); } } // 回調函數接口 interface ICallback { public void onCall(); } // 回調類 static class CallbackDemo { private ICallback callback; public void setListener(ICallback callback) { this.callback = callback; } public void call() { callback.onCall(); } } public static void main(String[] args) { // 觀察者 ConcreteObserverA observerA = new ConcreteObserverA(); ConcreteObserverB observerB = new ConcreteObserverB(); ConcreteObservable observable = new ConcreteObservable(); observable.addObserver(observerA); observable.addObserver(observerB); System.out.println("countObservers = " + observable.countObservers()); observable.changeValue(); // 回調函數 CallbackDemo callbackDemo = new CallbackDemo(); callbackDemo.setListener(new ICallback() { @Override public void onCall() { System.out.println("callback onCall"); } } ); callbackDemo.call(); } }
輸出結果:
countObservers = 2
ConcreteObserverB update
ConcreteObserverA update
callback onCall
以上是“Java如何實現回調函數與觀察者模式”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!
分享名稱:Java如何實現回調函數與觀察者模式
文章轉載:http://vcdvsql.cn/article24/jhgjje.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、標簽優化、手機網站建設、、靜態網站、App開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯