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

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
