設計模式 in Connector

 

適配器模式or門面代理

 Qkrservice的實現,是把webservce適配到本地的ServiceExtension接口的適配器。我認爲也可以看成是遠程門面代理。

單例模式+享元模式+備忘錄模式

某些manager類被實現爲單例,比如TDServiceManager,這裏邊保存了所有程序運行是的session。並對其進行管理,不允許同時有多個manager存在。
同時,每一個session都是一個享元,被保存在TDServiceManager中並被其管理。每當請求一個session的時候如果已經存在則不會創建新的session,而是共享已經創建的session。
manager中記錄session需要一個map,這就是備忘錄模式

不變模式

ServiceDataType在多線程環境中經常使用,他是不變對象(沒有任何辦法能夠修改其狀態),所以不需要維護。

模板方法模式+策略模式

Action的shouldEnable方法調用了抽象的isSupported()方法以完成其邏輯,而不同的子類實現了不同的isSupported()方法,而具備了完整而又不同的判斷邏輯。
load()方法 由preload() internalLoad() 和 postLoad()組成 其中internalLoad()是abstract protected的,由子類實現。

每個INode接受LoadModifier,就是一個策略,提供preload() 和 postLoad()方法。
preload()
{
    if(_loadModifier != null)
        {
            _loadModifier.preload();
        }
    else
        {
            return;
        }
}

迭代器模式

 每一個Selection都有一個iterator()方法,這個iterator代理的集合就是其內在的model(ServiceData)

觀察者模式

每一個ContentLoadListener是對一個contentLoad事件(我們沒有用一個Event類來代表這個事件,而是通過添加 JobChangeListener來捕獲這個事件,然後在JobChangeListener的事件處理方法中調用 ContentLoadListener的相應beforeload或afterLoad方法,在job.schedule()的前後會觸發 JobChangeListener的aboutToRun()和done()方法)的觀察者。


複合模式

INode,Folder,Document是典型的Component,Composite和Leaf




 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章