敏捷軟件開發(fā)(原則、模式與實(shí)踐)第三部分 設(shè)計(jì)模式-讀書筆記4

第28章 VISTITOR模式

VISTITOR模式:允許在不更改現(xiàn)有類層次結(jié)構(gòu)的情況下向其中增加新方法。
該模式如下:

  • VISTITOR模式
  • ACYCLIC VISTITOR模式
  • DECORATOR模式
  • EXTENSION OBJECT模式
VISTITOR模式

雙重分發(fā)(Dual Dispatch)是VISTITOR模式的核心機(jī)制。

ACYCLIC VISTITOR模式

如果被訪問層次結(jié)構(gòu)非常不穩(wěn)定,經(jīng)常需要?jiǎng)?chuàng)建許多新的派生類,那么每當(dāng)向被訪問層次結(jié)構(gòu)中增加一個(gè)新的派生類時(shí),就必須要更改且重新編譯基類以及他的所有派生類。
可以用ACYCLIC VISTITOR模式來解決這個(gè)問題。
ACYCLIC VISTITOR模式不適用于嚴(yán)格的實(shí)時(shí)系統(tǒng),對(duì)于那些被訪問的層次結(jié)構(gòu)不穩(wěn)定,且增量編譯比較重要的系統(tǒng)來說,是不錯(cuò)的選擇。

DECORATOR模式

VISITOR模式:使用這種方法可以在不改變現(xiàn)有類層次結(jié)構(gòu)的情況向下其中增加新方法。而 DECORATOR模式也可以達(dá)到這個(gè)目標(biāo)。

EXTENSION OBJECT模式

EXTENSION OBJECT模式也是另一種可以在不改變類層次結(jié)構(gòu)的情況下向其中增加功能的方法。層次結(jié)構(gòu)中的每個(gè)對(duì)象都持有一個(gè)特定擴(kuò)展對(duì)象(extension object)的列表。每個(gè)對(duì)象也提供一個(gè)通過名字查詢擴(kuò)展對(duì)象的方法。擴(kuò)展對(duì)象提供了操作原始層次結(jié)構(gòu)對(duì)象的方法。

可以使用VISITOR模式結(jié)局的問題,往往也可以使用更簡(jiǎn)單的方法解決。

第28章 STATE模式

狀態(tài)圖的4個(gè)元素:起始狀態(tài)、觸發(fā)遷移的事件、終止?fàn)顟B(tài)以及要執(zhí)行的動(dòng)態(tài)。

實(shí)現(xiàn)技術(shù)
    1. 嵌套swith/case語(yǔ)句
    1. 解釋遷移表
STATE模式

STATE模式:即具有嵌套swith/case語(yǔ)句的效率又具有解釋遷移表的靈活性。

STATE模式中,派生類特有回指向上下文類的引用。派生類的主要功能時(shí)使用這個(gè)引用選擇并調(diào)用上下文類中的方法。
STRATEGY模式的派生類不必持有指向上下文類的引用。并且也不需要去調(diào)用上下文類的方法。
所有STATE模式實(shí)例同樣也是STRATEGY模式實(shí)例,但并不是所有STRATEGY模式實(shí)例都是STATE模式實(shí)例。

STATE模式:徹底分離了狀態(tài)機(jī)的邏輯和動(dòng)作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容