6、Memento 模式
保持對象狀態(tài)的“快照”(snapshot),對象可以在不向外界公開其內(nèi)容的情況下 返回到它的最初狀態(tài)。
優(yōu)點:
保持封裝的完整性。
簡化了返回到初始狀態(tài)所需的操作。
以下情況中,應(yīng)該使用 Memento 模式:
必須保存對象狀態(tài)的快照,恢復(fù)狀態(tài)。
7、Observer 模式
定義了對象間 一到多 的依賴關(guān)系,當(dāng)對象改變狀態(tài)時,將自動通知 并 更新它所有的依賴對象。
優(yōu)點:
抽象了主題與 Observer 之間的耦合關(guān)系。
支持廣播方式通信。
以下情況中,應(yīng)該使用 Observer 模式:
對一個對象的修改 涉及對其他對象的修改,而且不知道有多少對象 需要進行相應(yīng)修改。
對象應(yīng)該能夠 在不同假設(shè)對象標(biāo)識的前提下 通知其它對象。
8、State 模式
對象在內(nèi)部狀態(tài)變化時,變更其行為,并且修改其類。
優(yōu)點:
針對不同狀態(tài)來劃分行為,使?fàn)顟B(tài)轉(zhuǎn)換顯式進行。
9、Strategy 模式
定義了一組能夠用來表示 可能行為集合的類。這些行為 可以在應(yīng)用程序中使用,來修改應(yīng)用程序功能。
優(yōu)點:
另一種子類化方法。
在類自身中定義了 每一個行為,減少了條件語句。
更容易擴展模型。
以下情況中,應(yīng)該使用 Strategy 模式:
許多相關(guān)類 只是在行為方面有所區(qū)別。
需要算法的不同變體。
算法使用客戶端未知的數(shù)據(jù)。
10、Template Method 模式
不重寫方法的前提下 允許 子類重載部分方法 的方法。
將一些步驟由子類實現(xiàn)。
優(yōu)點:代碼重用的基礎(chǔ)技術(shù)。
以下情況中,應(yīng)該使用 Template Method 模式:
一次實現(xiàn)算法的不變部分,子類實現(xiàn)算法的可變行為。
11、Visitor 模式
不改變操作元素的類 的前提下 定義一個新操作。
優(yōu)點:
容易添加新操作。
集中相關(guān) 排除不相關(guān) 操作。
以下情況中,應(yīng)該使用 Visitor 模式:
包含許多具有不同接口的對象類,并且想要對這些 依賴具體類的對象進行操作。
定義對象結(jié)構(gòu)的類很少被修改,但想要在此結(jié)構(gòu)上定義新的操作。
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |