接前一篇文章:軟考 系統(tǒng)架構(gòu)設(shè)計師系列知識點之設(shè)計模式(3)
所屬章節(jié):
老版(第一版)教材
第7章.?設(shè)計模式
? ? ? ? 第2節(jié). 設(shè)計模式實例
3. 行為型模式
行為型模式可以影響一個系統(tǒng)的狀態(tài)和行為流。通過優(yōu)化狀態(tài)和行為流轉(zhuǎn)換和修改的方式,可以簡化、優(yōu)化并且提高應(yīng)用程序的可維護(hù)性。行為型模式包括:
- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
(1)Chain of Responsibility(責(zé)任鏈)模式
Chain of Responsibility模式可以在系統(tǒng)中建立一個鏈,這樣消息可以在首先接收到它的級別被處理,或者可以定位到可以處理它的對象。
一句話概括:責(zé)任鏈模式為解除請求的發(fā)送者和接收者之間的耦合,而使多個對象都有機會處理這個請求。將這些對象連成一個鏈,并沿著這條鏈接傳遞該請求,直到有一個對象處理它。
Chain of Responsibility模式的優(yōu)點如下:
- 降低了耦合度。
- 增加向?qū)ο笾付ㄘ?zé)任的靈活性。
- 由于在一個類中產(chǎn)生的事件可以被發(fā)送到組成中的其它類處理器上,類的集合可以作為一個整體。
在以下情況中,應(yīng)該使用Chain of Responsibility模式:
- 多個對象可以處理一個請求,而其處理器卻是未知的。
- 想要在不指定確切的請求接收對象的情況下,向幾個對象中的一個發(fā)送請求。
- 可以動態(tài)地指定能夠處理請求的對象集。
(2)Command(命令)模式
Command模式在對象中封裝了請求,這樣就可以保存命令,將該命令傳遞給方法以及像任何其它對象一樣返回該命令。
一句話概括:Command模式將一個請求封裝為一個對象,從而可用不同的請求對客戶進(jìn)行參數(shù)化,將請求排隊或記錄請求日志,支持可撤銷的操作。
Command模式的優(yōu)點如下:
- 將調(diào)用操作的對象與知道如何完成該操作的對象相分離。
- 更容易添加新命令,因為不用修改已有類。
在以下情況中,應(yīng)該使用Command模式:
- 想要通過要執(zhí)行的動作來參數(shù)化對象。
- 要在不同的時間指定、排序以及執(zhí)行請求。
- 必須支持Undo、日志記錄或事務(wù)。
(3)Interpreter(解釋器)模式
Interpreter模式可以解釋定義其語法表示的語言,還提供了用表示來解釋語言中的語句的解釋器。
一句話概括:解釋器模式描述了如何為語言定義一個文法,如何在該語言中表示一個句子,以及如何解釋這些句子。
Interpreter模式的優(yōu)點如下:
- 容易修改并擴展語法。
- 更容易實現(xiàn)語法。
在以下情況中,應(yīng)該使用Interpreter模式:
- 語言的語法比較簡單。
- 效率并不是最主要的問題。
(4)Iterator(迭代器)模式
Iterator模式為集合中的有序訪問提供了一致的方法,而該集合是獨立于基礎(chǔ)集合、并與之相分離的。
一句話概括:迭代器模式提供了一種方法來訪問聚合對象,而不用暴露這個對象的內(nèi)部表示。迭代器模式支持以不同的方式遍歷一個聚合對象。
Iterator模式的優(yōu)點如下:
- 支持集合的不同遍歷。
- 簡化了集合的接口。
在以下情況中,應(yīng)該使用Iterator模式:
- 在不開放集合對象內(nèi)部表示的前提下,訪問集合對象內(nèi)容。
- 支持集合對象的多重遍歷。
- 為遍歷集合中的不同結(jié)構(gòu)提供了統(tǒng)一的接口。
(5)Mediator(中介者)模式
Mediator模式通過引入一個能夠管理對象間消息分布的對象,簡化了系統(tǒng)中對象間的通信。該模式可以減少對象之間的相互引用,從而提高了對象間的共耦合度,并且它還可以獨立地改變其間的交互。
一句話概括:中介者模式用一個中介對象封裝一系列的對象交互。中介者使得各對象不需要顯式地相互調(diào)用,從而使其耦合松散,而且可以改變它們之間的交互。
Mediator模式的優(yōu)點如下:
- 去除對象間的影響。
- 簡化了對象間協(xié)議。
- 集中化了控制。
- 由于不再需要直接互傳消息,單個組件變得更加簡單,而且容易處理。
- 由于不再需要包含邏輯來處理組件間的通信,組件變得更加通用。
在以下情況中,應(yīng)該使用Mediator模式:
- 對象集合需要以一個定義規(guī)范但復(fù)雜的方式進(jìn)行通信。
- 想要在不使用子類的情況下自定義分布在幾個對象之間的行為。
(6)Memento模式
Memento模式可以保持對象狀態(tài)的“快照(snapshot)”,這樣對象可以在不向外界公開其內(nèi)容的情況下返回到它的最初狀態(tài)。
Memento模式的優(yōu)點如下:文章來源:http://www.zghlxwxcb.cn/news/detail-719615.html
- 保持封裝的完整。
- 簡化了返回到初始狀態(tài)所需的操作。
在以下情況中,應(yīng)該使用Memento模式:文章來源地址http://www.zghlxwxcb.cn/news/detail-719615.html
- 必須保存對象狀態(tài)的快照,這樣以后就可以恢復(fù)狀態(tài)。
- 使用直接接口來獲得狀態(tài)可能會公開對象的細(xì)節(jié),從而破壞對象的封裝性。
到了這里,關(guān)于軟考 系統(tǒng)架構(gòu)設(shè)計師系列知識點之設(shè)計模式(4)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!