穩固而知新 Observer

2021-04-03 01:21:10 字數 763 閱讀 8144

observer

該模式的動機是為了在增加新的觀察物件時可以無需更改被觀察的物件,被觀察物件可以保持封閉。

public class observable

private void fireobserver() }}

context是乙個gui應用程式的唯一上下文例項,用來和服務端互動資訊。taskview是用來顯示當前系統的任務列表,它實現了observer介面,通過observable的addobserver方法註冊到context中。context在收到服務端發出的更新命令時,就會呼叫observable的notify方法,notify方法會呼叫註冊的observer物件的update方法。執行taskview的update方法時,taskview會到到後台中取到所有的task資訊,顯示在自己的介面上。

上面的例子是乙個典型的拉模型,observer的update被呼叫後,要自己去取得新的資訊,可能的後果是無法分辨資訊的實時性。下面的例子為fireobserver方法增加了乙個event引數,將最新的資訊傳送給observer.observer的派生類各自實現自己的業務功能。這是observer模式的推模型。

userview和emsview本別用來現實使用者和ems的列表,它們實現了observer介面,並註冊到context中,context受到服務端發來的event資訊,就會呼叫註冊其中observer的update方法,userview和emsview通過update接受到了event訊息,分別實現自己的需求。

推模型比拉模型適應更複雜的情況。

穩固而知新 FACADE,MEDIATOR

fa ade 該模式為一組具有複雜且全面的介面物件提供乙個簡單且特定的介面。fa ade模式是以明顯且受限的方式來施加它的策略。使用時必須主動地呼叫它,使用者必須理解該策略的使用含義。mediator 該模式相對於fa ade的顯式策略,它是以隱藏的方式來施加策略。public class text...

溫故而知新

堆排 建立堆,維護堆的屬性 一次拿掉乙個,然後維護屬性,二分的結構 使得維護屬性只要logn的時間 冒泡也是一次拿走乙個 但是線性的結構 每次沒有節省時間 快排 一次確定 乙個值的位置,然後二分,縮小問題的範圍。floyd找最短 一次更新 將狀態改為經過固定點的 最短距離 迴圈 遍歷每個點,則結果為...

溫故而知新(一)

一 c 基礎語法 1.注釋符 b.解釋所寫的 2.vs中常用的快捷鍵 3.變數 用來在計算機中儲存資料 b.要給儲存空間起乙個有意義的名字,方便我們以後的使用 b.變數型別 變數名 值 4.命名規則 5.號的使用 6.佔位符的使用 先挖坑,再填坑 異常 exception 在程式執行的過程中,由於某...