软件构造学习笔记-第十一周
本周的內(nèi)容是,比較各個(gè)設(shè)計(jì)模式的區(qū)別和聯(lián)系,并介紹了狀態(tài)模式和備忘錄模式,以及正則表達(dá)式。正則表達(dá)式用于對(duì)文本文件的處理。在實(shí)驗(yàn)3中有一項(xiàng)要求是對(duì)輸入文本進(jìn)行解析,構(gòu)造航班。要求表達(dá)式不僅要讀入合法數(shù)據(jù),還要不匹配非法的數(shù)據(jù),需要仔細(xì)琢磨。
設(shè)計(jì)模式的區(qū)別和聯(lián)系
1.單個(gè)繼承樹的形式
只使用繼承,不使用委托。依賴反轉(zhuǎn),客戶端只能依賴抽象(使用接口),不能依賴具體。發(fā)生變化時(shí)最好是擴(kuò)展而不是修改。
①Adapter:適用于已經(jīng)有一個(gè)類,但其方法與目前客戶端需求不一致,所以擴(kuò)展一個(gè)adapter和一個(gè)統(tǒng)一接口,該接口被adapter類和原類實(shí)現(xiàn),供客戶端使用。
②Proxy(代理模式):
③Template(模板模式):適用于有共性的算法流程,但是算法各步有不同的實(shí)現(xiàn)。典型的“將共性提升至父類型,將個(gè)性保留在子類型”。如果某個(gè)步驟不需要多種實(shí)現(xiàn),直接在抽象類里寫出共性實(shí)現(xiàn)即可。
2.兩個(gè)繼承樹的形式
兩個(gè)繼承樹,兩個(gè)層次的委托。
①Strategy:需要有多個(gè)算法的實(shí)現(xiàn),在右側(cè)樹里擴(kuò)展子類型即可,在左側(cè)子類型里傳入不同的類型實(shí)例。類比實(shí)驗(yàn)3中的API。
②Iterator:
③FactoryMethod、AbstractFactioy
④Observer:
⑤Visitor:
StatePattern狀態(tài)模式
使用委托,將狀態(tài)轉(zhuǎn)換的行為委派到獨(dú)立的state對(duì)象去完成。
單例模式,外部不能通過構(gòu)造方法創(chuàng)造實(shí)例對(duì)象,所有該狀態(tài)的類共享該實(shí)例。構(gòu)造函數(shù)私有、成員域私有。
MementoPattern備忘錄模式
記住對(duì)象的歷史狀態(tài),以便于回滾。
Originator用于創(chuàng)建備忘錄(存儲(chǔ)狀態(tài))或者從備忘錄中恢復(fù)狀態(tài)。
Memento包含get、set方法。
Caretaker用以存儲(chǔ)備忘錄。
語法驅(qū)動(dòng)構(gòu)造
正則表達(dá)式
總結(jié)
以上是生活随笔為你收集整理的软件构造学习笔记-第十一周的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 皇冠梨的功效与作用、禁忌和食用方法
- 下一篇: 软件构造学习笔记-实验3