《Head First设计模式》 读书笔记16 其余的模式(二) 蝇量 解释器 中介者
?
《Head First設(shè)計(jì)模式》 讀書筆記16 其余的模式(二) 蠅量 解釋器 中介者
?
蠅量(Flyweight Pattern)
如想讓某個(gè)類的一個(gè)實(shí)例能用來提供許多“虛擬實(shí)例”,就使用蠅量模式(Flyweight Pattern) 。
例子場景:景觀設(shè)計(jì)中的樹。
只用一個(gè)樹實(shí)例和一個(gè)客戶對象來維護(hù)所有的樹的狀態(tài)。
?
?
?
優(yōu)點(diǎn):
減少運(yùn)行時(shí)對象實(shí)例的個(gè)數(shù),節(jié)省內(nèi)存。
將許多“虛擬”對象的狀態(tài)集中管理。
用途:
當(dāng)一個(gè)類有許多的實(shí)例,而這些實(shí)例能被同一方法控制的時(shí)候,我們就可以使用蠅量模式。
缺點(diǎn):
蠅量模式的缺點(diǎn)在于,一旦你實(shí)現(xiàn)了它,那么單個(gè)的邏輯實(shí)例將無法擁有獨(dú)立的而不同的行為。
?
解釋器(Interpreter Pattern)
使用解釋器模式(Interpreter Pattern)為語言創(chuàng)建解釋器。
例子場景:一種簡單的給孩子用的編程語言,定義一個(gè)語法,表現(xiàn)并解釋語法中的句子,讓學(xué)生看到這個(gè)語言控制程序中鴨子的效果。
當(dāng)你需要實(shí)現(xiàn)一個(gè)簡單的語言時(shí),就使用解釋器模式定義語法的類,并用一個(gè)解釋器解釋句子。每個(gè)語法規(guī)則都用一個(gè)類代表。
?
?
要想解釋這種語言,就調(diào)用每個(gè)表達(dá)式類型的interpret()方法。此方法需要傳入一個(gè)上下文(context)——也就是我們正在解析的語言字符串輸入流——然后進(jìn)行比對并采取適當(dāng)?shù)膭?dòng)作。
?
優(yōu)點(diǎn):
將每一個(gè)語法規(guī)則表示成一個(gè)類,方便于實(shí)現(xiàn)語言。
因?yàn)檎Z法由許多類表示,所以你可以輕易地改變或擴(kuò)展此語言。
通過在類結(jié)構(gòu)中加入新的方法,可以在解釋的同時(shí)增加新的行為,例如打印格式的美化或者進(jìn)行復(fù)雜的程序驗(yàn)證。
用途:
當(dāng)你需要實(shí)現(xiàn)一個(gè)簡單的語言時(shí),使用解釋器。
當(dāng)你有一個(gè)簡單的語法,而且簡單比效率更重要時(shí),使用解釋器。
可以處理腳本語言和編程語言。
缺點(diǎn):
當(dāng)語法規(guī)則的數(shù)目太大時(shí),這個(gè)模式可能會(huì)變得非常繁雜。在這種情況下,使用解釋器/編譯器的產(chǎn)生器可能更合適。
?
中介者(Mediator Pattern)
使用中介者模式(Mediator Pattern)來集中相關(guān)對象之間復(fù)雜的溝通和控制方式。
例子場景:有一個(gè)自動(dòng)屋,但是其中有著復(fù)雜的規(guī)則。想要持續(xù)地追蹤每個(gè)對象的每個(gè)規(guī)則,以及眾多對象之間彼此錯(cuò)綜復(fù)雜的關(guān)系,實(shí)在不容易。
在這個(gè)系統(tǒng)中加入一個(gè)中介者,一切都變得簡單了:
每個(gè)對象都會(huì)在自己的狀態(tài)改變時(shí),告訴中介者。
每個(gè)對象都會(huì)對中介者所發(fā)出的請求作出回應(yīng)。
?
?
中介者內(nèi)包含了整個(gè)系統(tǒng)的控制邏輯。當(dāng)某裝置需要一個(gè)新的規(guī)則時(shí),或者是一個(gè)新的裝置被加入系統(tǒng)內(nèi),其所有需要用到的邏輯也都被加進(jìn)了中介者內(nèi)。
優(yōu)點(diǎn):
通過將對象彼此解耦,可以增加對象的復(fù)用性。
通過將控制邏輯集中,可以簡化系統(tǒng)維護(hù)。
可以讓對象之間所傳遞的消息變得簡單而且大幅減少。
用途:
中介者常常被用來協(xié)調(diào)相關(guān)的GUI組件。
缺點(diǎn):
中介者模式的缺點(diǎn)是,如果設(shè)計(jì)不當(dāng),中介者對象本身會(huì)變得過于復(fù)雜。
轉(zhuǎn)載于:https://www.cnblogs.com/mengdd/archive/2013/05/12/3073725.html
總結(jié)
以上是生活随笔為你收集整理的《Head First设计模式》 读书笔记16 其余的模式(二) 蝇量 解释器 中介者的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神奇的vfork
- 下一篇: ASP.Net 获取服务器信息