03 Java發布訂閱模式(設計模式-快餐簡解-【觀察者模式】)

时间:2024-05-17 01:02:46 编辑: 来源:

c void update() {

phone = teacher getPhone();

}

}

//Client java

package youngmaster model Observer;

import java util Vector;

/

**

* @author youngmaster

* @E mail:young * @version myEclipse

* @create time 上午 : :

*/

/

**

*測試類

*/

public class Client {

/

**

* @param args

*/

@SuppressWarnings( unchecked )

public static void main(String[] args) {

Vector students = new Vector();

Teacher teacher = new Teacher();

for (int i = ; i < ; i++) {

Student student = new Student( student + i teacher); students add(student); teacher addObserver(student);

}

teacher setPhone( );

for (int i = ; i < ; i++)

((Student) students get(i)) show();

System out println( \n============================\n );

teacher setPhone( );

for (int i = ; i < ; i++)

((Student) students get(i)) show();

}

lishixin/Article/program/Java/gj/201311/27566

android消息推送GCM、XMPP、MQTT三種方案的優劣是什么?

Android推送方案分析(MQTT/XMPP/GCM)

本文主旨在于,對目前Android平臺上最主流的幾種消息推送方案進行分析和對比,比較客觀地反映出這些推送方案的優缺點,幫助大家選擇最合適的實施方案。 

方案1、使用GCM服務(Google Cloud Messaging)

簡介:Google推出的云消息服務,即第二代的G2DM。

優點:Google提供的服務、原生、簡單,無需實現和部署服務端。

缺點:Android版本限制(必須大于2.2版本),該服務在國內不夠穩定、需要用戶綁定Google帳號,受限于Google。

方案2、使用XMPP協議(Openfire + Spark + Smack)

簡介:基于XML協議的通訊協議,前身是Jabber,目前已由IETF國際標準化組織完成了標準化工作。

優點:協議成熟、強大、可擴展性強、目前主要應用于許多聊天系統中,且已有開源的Java版的開發實例androidpn。

缺點:協議較復雜、冗余(基于XML)、費流量、費電,部署硬件成本高。

簡介:輕量級的、基于代理的“發布/訂閱”模式的消息傳輸協議。

優點:協議簡潔、小巧、可擴展性強、省流量、省電,目前已經應用到企業領域(參考:買粉絲://mqtt.org/software),且已有C++版的服務端組件rsmb。

缺點:不夠成熟、實現較復雜、服務端組件rsmb不開源,部署硬件成本較高。

設計模式-快餐簡解-【觀察者模式】

【 觀察者模式應用場景舉例 】

比如在玩 極品飛車 這款游戲 每一個車手到達終點的時候 都會在其它車手的屏幕上顯示 某某人以多少時間到達終點的提示 其實這就是一個典型的觀察者模式的應用 觀察者模式即是典型的雙向一對多的應用場景下用一的一端來通知多的一端

【 觀察者 模式解釋】

類型 行為模式

定義了一種一對多的依賴關系 讓多個觀察者對象同時監聽某一個主題對象 這個主題對象的狀態發生改變時 會通知所有的觀察者對象 使它們能夠自己更新自己

【 觀察者 模式UML圖】

【 觀察者 模式 JAVA代碼實現】

新建抽象發布通知父類

package carer_subject;import java util ArrayList;import java util List;import carer_observer carer_observer;public interface carer_subject_parent {     public void set_state(String state_string);    public String get_state();    public void add_observer(carer_observer carer_observer_ref);    public void sub_observer(carer_observer carer_observer_ref);    public void notityAllCarer();}

新建發布通知實現類

package carer_subject;import java util ArrayList;import java util List;import carer_observer carer_observer;public class carer_subject_sub implements carer_subject_parent {     List<carer_observer> list_observer = new ArrayList<carer_observer>();    private String state;    public void set_state(String state_string) {         this state = state_string;    }    public String get_state() {         return state;    }    public void add_observer(carer_observer carer_observer_ref) {         list_observer add(carer_observer_ref);    }    public void sub_observer(carer_observer carer_observer_ref) {         list_observer remove(carer_observer_ref);    }    public void notityAllCarer() {         state =  到達終點 ;        for (int i =  ; i < list_observer size(); i++) {             list_observer get(i) show_info();        }    }}

新建觀察者接口

package carer_observer;import carer_subject carer_subject_parent;public interface carer_observer {     public void show_info();}

新建觀察者實現類

package carer_observer;import carer_subject carer_subject_parent;public class carer_observer_

搜索关键词: