摘自大話設(shè)計(jì)模式
行為型模式
觀察者模式:定義一種對(duì)象間的一對(duì)多的依賴(lài)關(guān)系,當(dāng)一個(gè)對(duì)象狀態(tài)發(fā)生變化,所有依賴(lài)他的對(duì)象都得到通知并自動(dòng)更新。
模板方法模式:定義一個(gè)操作的算法骨架,而將一些步驟延遲到子類(lèi)中,模板方法使得子類(lèi)可以不改變一個(gè)算法結(jié)構(gòu)即可重定義該算法的某些特定步驟。
由一個(gè)抽象類(lèi)組成,這個(gè)抽象類(lèi)定義了需要覆蓋的可能有不同實(shí)現(xiàn)的模板方法,每個(gè)派生類(lèi)將為模板類(lèi)實(shí)現(xiàn)新方法。
命令模式:將一個(gè)請(qǐng)求封裝成一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶(hù)進(jìn)行參數(shù)化;可以對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可撤銷(xiāo)的操作。
將調(diào)用操作的對(duì)象和知道如何實(shí)現(xiàn)操作的對(duì)象解耦。發(fā)送者只管發(fā)送請(qǐng)求,而命令模式可以在不同時(shí)刻指定,排列和執(zhí)行請(qǐng)求;也可以在實(shí)施操作前保存狀態(tài),以便支持取消重做的操作;還可以記錄整個(gè)操作的日志;
狀態(tài)模式:允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變他的行為,讓對(duì)象看起來(lái)好像修改了他的類(lèi)。
把條件分支分解成多個(gè)子類(lèi),利用多態(tài)提高擴(kuò)展性和可維護(hù)性。
決定狀態(tài)轉(zhuǎn)義的邏輯不在if else 或者swicth里面,而是分布在狀態(tài)子類(lèi),由于所有與狀態(tài)相關(guān)的代碼都存在于某個(gè)狀態(tài)子類(lèi)中,所以通過(guò)定義新的子類(lèi)可以很容易定義新的狀態(tài)和實(shí)現(xiàn)狀態(tài)的轉(zhuǎn)換。
職責(zé)鏈模式:使多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求,從而避免請(qǐng)求的發(fā)送者和接受者之間的耦合關(guān)系。將這些對(duì)象連成一條鏈,并沿著這鏈傳遞請(qǐng)求,直到一個(gè)對(duì)象處理他為止。
也是請(qǐng)求者與執(zhí)行者分離,因?yàn)橛卸鄠€(gè)對(duì)象可以處理這個(gè)請(qǐng)求,但是事先不知道哪個(gè)對(duì)象將要處理,所以把所有對(duì)象排成鏈,并沿著這個(gè)鏈傳遞請(qǐng)求,直到一個(gè)對(duì)象處理了請(qǐng)求。
解釋器模式:給定一個(gè)語(yǔ)言,定義他的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來(lái)解釋語(yǔ)言中的句子。
如果一個(gè)特定類(lèi)型的問(wèn)題的發(fā)生頻率夠高,那就可以考慮將該問(wèn)題的各個(gè)實(shí)例表述為一個(gè)簡(jiǎn)單語(yǔ)言中的句子。(構(gòu)建解釋器,解釋這些句子)
中介者模式:用一個(gè)中介對(duì)象封裝一系列對(duì)象的交互。中介者使得各個(gè)對(duì)象不需要顯式的相互引用,從而使得耦合松散,而且可以獨(dú)立改變他們之間的交互。
將集體行動(dòng)單獨(dú)封裝為中介者,中介者協(xié)調(diào)控制一組對(duì)象的交互。對(duì)象不需要顯式的相互引用,他們只知道中介者,這樣可減少對(duì)象的相互連接。
訪問(wèn)者模式:表示一個(gè)作用于某對(duì)象結(jié)構(gòu)中的各元素的操作,他使得你可以在不改變?cè)氐念?lèi)的前提下定義作用于這些元素的新操作。(世界上有男人女人,訪問(wèn)者可定義男人女人的喜怒哀樂(lè)并可輕松擴(kuò)展新情緒。)
訪問(wèn)者增加具體的元素是困難的,但增加依賴(lài)于復(fù)雜對(duì)象結(jié)構(gòu)的構(gòu)件的操作很容易,僅需增加一個(gè)訪問(wèn)者即可為該對(duì)象定義一個(gè)新操作。
策略模式:定義一系列算法,單獨(dú)封裝,并且使他們可以互相替換。本模式使得算法可以獨(dú)立于使用他的客戶(hù)而變化。
優(yōu)先使用對(duì)象組合,而非類(lèi)繼承。
備忘錄模式:在不破壞封裝性的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在該對(duì)象之外保存這個(gè)狀態(tài),這樣可以將該對(duì)象隨時(shí)恢復(fù)到原先保存的狀態(tài)。
可避免暴露一些只應(yīng)該由當(dāng)前對(duì)象管理卻又必須存儲(chǔ)在當(dāng)前對(duì)象外的信息??砂褟?fù)雜的對(duì)象的內(nèi)部信息對(duì)其他對(duì)象隱藏,從而保持了封裝邊界。
迭代器模式:提供一種方法可順序訪問(wèn)對(duì)象的各個(gè)元素,又不暴露該對(duì)象的內(nèi)部表示。
將對(duì)列表的訪問(wèn)和遍歷從列表對(duì)象中分離了出來(lái)并放到一個(gè)迭代器對(duì)象中,迭代器對(duì)象定義了一個(gè)訪問(wèn)列表元素的接口,并可跟蹤當(dāng)前元素,并可知道哪些元素已經(jīng)遍歷過(guò)了。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專(zhuān)業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。
名稱(chēng)欄目:設(shè)計(jì)模式-行為型模式-創(chuàng)新互聯(lián)
分享地址:http://jinyejixie.com/article40/egpho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、服務(wù)器托管、定制網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容