這次要介紹觀察者模式(Observer Pattern),據說觀察者模式經常會使用到,看完它的概念後仔細想想似乎是如此。
大家應該都知道訂報吧,我向報社註冊說我要每天送報到我住家,註冊完後,報社也的確準時的將報只送到郵筒中。
上面的就是觀察者模式的例子,觀察者模式需要有主題(Subject)和觀察者(Observer),主題可以被觀察者給訂閱,而且訂閱的觀察者可以不只一個,當觀察者不想訂報紙了,可以通知主題要取消訂報。
關係圖表:
上方圖表是主題與觀察者之間的UML圖,由此圖可以看出Time類別實作Subject介面,Clock實作Observer介面,在觀察者模式中,Time即是主題,Clock是觀察者
該範例是Time取得時間,每一秒更新一次,每次更新便會通知Clock,Clock收到通知後就會印出目前時間
結果如下:
源碼:點我