找出兩個專案中的設計模式,更加理解設計模式在框架中的應用。
專案1:
業務場景:當zk中的配置變化的時候,實時通知業務程式。
***模式:
監聽者應用1:
curatorlistener:監聽者介面,監聽zk變化
curatorframework:被監聽者
confignodeeventlistener:監聽者實現 , confignodeeventlistener.eventreceived:監聽者動作 , zookeeperconfiggroup被監聽者更新的資料物件 (詳見eventreceived方法)
監聽者應用2:
isubject 被監聽者介面
generalconfiggroup,zookeeperconfiggroup 被監聽者實現。兩種方式通知監聽者:一分鐘定時通知下監聽者;由例子1中的 curator通知 zookeeperconfiggroup,轉而觸發:reloadkey->super.put->notify
iobserver 監聽者介面
refreshablebox 監聽者實現
橋接模式:
專案:
業務場景:zookeeper資料變化的時候,實時改變本地節點資料。
public abstract class zkclientwatcher implements watcher
protected abstract void processnodecreated(string path);
}public class ticketzkclientwatcher extends zkclientwatcher
}
其實看的出來,zkclientwatcher 和 ticketzkclientwatcher 兩個類進行了功能解耦。乙個負責從zookeeper拿資料,乙個負責改變本地節點。
zkclientwatcher 這個類作為「橋」,把 ticketzkclientwatcher(具體實現) 和 watcher(抽象行為) 連線了起來。
跟介面卡模式很像,都「連線」了兩個物件。都屬於結構模式的一種,但又有差異:
介面卡模式:
客戶端使用a介面(target)。
需要呼叫b介面(adaptee)。
可以由c類實現a介面,再間接呼叫b介面來完成。
最後總結一下兩天的心得:設計模式需要結合具體的例項**才能明白其用意,需要慢慢悟,才能悟出其中道理。
springboot原始碼略讀
springboot的精髓是自動依賴注入。那麼哪些能自動注入呢,開啟spring boot autoconfigure,jar下的spring.factories。可以看到一堆這樣的配置 auto configure org.springframework.boot.autoconfigure.en...
原始碼中的設計模式記錄
工廠模式 jdk中的calendar.getinstance 方法 原型模式 spring中的 prototype 單例模式 jdk中的 runtime類 建造者模式 jdk中的stringbuilder 介面卡模式 spring中的handleadapter 是方法適配,還有好多介面適配,實現介面...
Spring原始碼之設計模式
一.模式 分為jdk 和cglib 前者實現介面,後者生成繼承 1.兩個參與角色 執行者和被 人 2.對於被 人來說,這件事情是一定要完成的,但是自己又不想做或者沒有時間做,找 3.需要獲取到被 人的資料。歸納 辦事要求人,所以找 二.工廠模式 分為簡單工廠 工廠方法 抽象工廠。1.對呼叫者隱藏複雜...