grasp设计模式应用场景_grasp设计模式笔记回顾
根據(jù)講師所講做了一下筆記以便自己能方便學(xué)習(xí):
------------------------------------------grasp設(shè)計模式;
grasp(general responsibility assignment software patterns:通用職責(zé)分配軟件模式)模式相對于gof23模式更加抽象,
它的核心思想:職責(zé)如何分配和如何用用職責(zé)設(shè)計對象;
它的五個基本模式:
---信息專家、創(chuàng)建者、高內(nèi)聚、低耦合、控制器;
四個擴(kuò)展模式;
---多態(tài)性、純虛構(gòu)、間接性、防止變異;
---------------------------------------------
---------------------信息專家:
職責(zé)分配給那個對象,要看這個職責(zé)所需要的信息是哪個對象所擁有的,擁有資源的對象
才有資格執(zhí)行職責(zé),這也體現(xiàn)了對象封裝的概念。信息的擁有者,同時就是對象的操作者,
可以減少不必要的類之間的關(guān)聯(lián),體現(xiàn)了設(shè)計原則:類的單一職責(zé)。
---------------------創(chuàng)建者:
類的實例應(yīng)該有誰來創(chuàng)建;創(chuàng)建的職責(zé)應(yīng)該交給誰;
b_=>a:包含,聚集、記錄、頻繁使用、有出事化數(shù)據(jù);
優(yōu)點:整個結(jié)構(gòu)很清晰,有利于類或組件的使用,防止職責(zé)分散(信息專家),降低耦合度;
---------------------高內(nèi)聚:
解決一個怎樣才能降低類的復(fù)雜度,簡化控制,
我們贏將緊密相關(guān)的功能或職責(zé)分配給同一個類(各司其職)
優(yōu)點:聚集相關(guān)的功能結(jié)構(gòu)清晰,容易理解。
類的單一,使得簡化。
-----------------------低耦合:
如何降低類之間的關(guān)聯(lián)程度,能適應(yīng)需求變化;
為類分配職責(zé)時,應(yīng)該盡量降低類之間的關(guān)聯(lián)關(guān)系;
使得系統(tǒng)中某一部分的變化對其他部分影響降低到最低;
-----------------------控制器:
在UI之外,應(yīng)該由哪個類處理系統(tǒng)的事件呢。
把系統(tǒng)事件處理的職責(zé)分配給controller類;
好處:防止同類職責(zé)的分散,滿足高內(nèi)聚,低耦合原則,變化的高度適應(yīng)能力;
-----------------------多態(tài)性:
如何創(chuàng)建可插拔的軟件構(gòu)件。
當(dāng)相關(guān)選擇或行為歲類型有所不同時,使用多態(tài)操作作為變化的行為類型分配職責(zé)。
-----------------------純虛構(gòu):
有時候不想違背高內(nèi)聚低耦合的目標(biāo),但信息專家模式提供的解決方案又不合適時。
solution:對人為制造的類分配一組高內(nèi)聚的職責(zé),該類并不代表問題領(lǐng)域的概念-
虛構(gòu)的事物,用以支持高內(nèi)聚,低耦合和復(fù)用。
個人理解:為了達(dá)到更好的設(shè)計而虛構(gòu)出來的對象來去行使某些不好分配的職責(zé)。
比如gof中命令模式,我們虛構(gòu)出一個類來存儲命令,以實現(xiàn)排隊功能。
gof設(shè)計模式全都是純虛構(gòu)。為了更好的解決問題虛構(gòu)出來的類;
------------------------間接性:
比如終結(jié)者、adapter適配器,都起到了簡介的效果
------------------------防止變異:
為了不讓對象內(nèi)部的變化或不穩(wěn)定性不會對其他元素產(chǎn)生不良影響(實際高內(nèi)聚)
我們可以通過創(chuàng)建穩(wěn)定的接口來解決,就是所說的針對接口編程,而不是針對實現(xiàn)編程。
像封裝、多態(tài)、接口、虛擬機(jī)、配置文件都是為了這個,哪里動就封裝哪里,以至于不影響其他
的相關(guān)聯(lián)的對象,同樣也是為了更好的變化和擴(kuò)展。使之更穩(wěn)健。
總結(jié)
以上是生活随笔為你收集整理的grasp设计模式应用场景_grasp设计模式笔记回顾的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 整数输出 d f_pyth
- 下一篇: 8266串口调试助手_开源软件分享-基于