氣象站採集的資料用於三個公告板進行展示,請設計這樣的系統,完成我們想要的功能:當氣象資料發生變化時,立即通知三個公告板更新資料。我們這裡的氣象站就是發布者,三個公告板就是訂閱者。
1. 設計乙個氣象站類,裡面儲存各種氣象資料。
2. 設計不同的公告板用於顯示資料,設計統一的資料更新方法,用於更新資料顯示。
3. 在氣象站類提供訂閱者管理的方法,儲存所有訂閱者的物件例項,當資料發生變化時,發布者將資料挨個通知到訂閱者,並提供取消訂閱的方法。
1.定義發布者
//繼承observable
public class weatherdata extends observable
//資料發生變化,進行通知
public void measurementschanged()
//產生資料變化
public void setmeasurements(float temperature, float humidity, float pressure)
//用於觀察者的隨意pull資料
public float gettemperature()
public float gethumidity()
public float getpressure()
}
2.定義訂閱者
public class currentconditiondisplay implements observer, displayelement
public void update(observable obs, object arg)
}}
1. 資料發生變化,直接通知到訂閱者。
2. 自動pull的方法提供了靈活性。
Head First設計模式之工廠模式
定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個.工廠方法讓類把例項化推遲到子類 1 抽象工廠角色 這是工廠方法模式的核心,它與應用程式無關。是具體工廠角色必須實現的介面或者必須繼承的父類。2 具體工廠角色 它含有和具體業務邏輯有關的 由應用程式呼叫以建立對應的具體產品的物件。3 抽象產品...
《Head First設計模式》之命令模式
命令模式就是將方法呼叫 method invocation 封裝起來。通過封裝方法呼叫,我們可以把運算塊包裝成形,所以呼叫此運算的物件不需要關心事情是如何進行的,只要知道如何使用包裝成形的方法來完成它就可以了。通過封裝方法呼叫,可以用在以下場景 記錄日誌或者重複使用這些封裝來實現撤銷 undo 我對...
Head First設計模式之組合模式
將物件組合成樹形結構來表現 整體 部分 層次結構。組合能讓客戶以一致的方法處理個別物件以及組合物件。主要部分可以被一致對待問題.組合模式主要包含三個角色 2.composite 容器構件 容器節點包含子節點,其子節點可以是葉子節點,也可以是容器節點,它提供乙個集合用於儲存子節點,實現了在抽象構件中定...