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

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