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