原始碼中的設計模式略讀

2021-07-14 03:29:04 字數 1225 閱讀 9562

找出兩個專案中的設計模式,更加理解設計模式在框架中的應用。

專案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.對呼叫者隱藏複雜...