JavaShuo
欄目
標籤
P3_C17:設計對象的原則
時間 2019-11-29
標籤
p3
c17
設計
對象
原則
欄目
C&C++
简体版
原文
原文鏈接
GRASP:Designing Objects with Responsibilities
閱讀書上第17章
數據庫
outputs of object Design
UML 交互圖、類圖、包圖
UI草圖和原型
數據庫模型
報表的草圖和原型
Responsibility-Driven Design
UML把職責定義爲類元的契約或義務
對象的行爲職責
自身執行一些行爲,如建立對象或計算
初始化其餘對象中的動做
控制和協調其餘對象中的動做
對象的認知職責
對私有封裝數據的認知
對相關對象的認知
對其可以導出或計算的事物的認知
準則:
領域模型描述了領域對象的屬性和關聯,所以一般產生與「認知」相關的職責
大職責具備數百個類和方法,小職責可能只有2個方法
GRASP:
General Responsibility Assignment Software Patterns
繪製交互圖是考慮將職責實現爲方法的時機
模式:以結構化形式對這些問題、解決方法和命名進行描述使其系統化,那麼這些原則和習慣用法稱爲模式
函數
Creator:誰應該負責建立類的實例
若是如下條件之一爲真,將建立A的實例的職責分配給類B
B包含或組成彙集了A
B記錄了A
B直接使用A
B具備A的初始化數據
好處:
支持 low coupling,減小維護的依賴性和增長重用的可能性
準則:
封裝的容器和記錄類是建立其所容納和事物的很好的選擇
Information Expert:若是給定鍵值,誰知道對象的相關信息
把職責分配給具備完成該職責所需信息的那個類
好處:
信息封裝,支持低耦合
鼓勵連接使用更多易於理解和維護的輕量級類定義
Low Coupling:如何減小因變化產生的影響
分配職責以使(沒必要要的)耦合保持在較低的水平
coupling:元素與其餘元素的鏈接、感知及依賴的程度的度量
在面嚮對象語言中,如下狀況X有對Y的耦合
X有Y實例/Y類的屬性
X對象調用Y對象的函數
X有一個方法涉及到Y實例/Y類,如Y的參數或者局部變量或X方法返回一個Y實例
X是Y的直接/間接子類,子類和超類之間有很強的耦合性
Y是接口,X是實現
好處
不會被其餘組件的改變所影響
便於理解
易於複用
高耦合自己不是問題所在,而是和不穩定的元素之間的耦合
Controller:在UI層上的哪一個對象應該首先從UI層接收該消息
控制器:UI層外第一個負責接收並處理系統操做信息的對象
把職責分配給能表明下列選擇之一的對象:
外觀控制器:表明所有「系統」、「根對象」、運行軟件的設備或主要的子系統,外觀控制器的全部變形
用例控制器:表明發生系統操做的用例場景
準則
控制器應當把須要完成的工做委派給其餘對象。控制器只是協調或控制這些活動,自己並不完成大量工做
概念
entity object: 與應用無關的(通常是持久性的)領域軟件對象
boundary object: 接口的抽象
control object:控制器模式描述的用例處理者
優勢
增長了可複用和接口可拔插的潛力
得到了推測用例狀態的機會
臃腫的控制器
跡象
只有一個控制器類來接收系統中所有的系統事件,並且有不少系統事件
爲了處理系統時間,由控制器完成諸多必要的任務,而不是把工做委派出去
控制器有不少屬性而且他維護關於系統或領域的重要信息,(這些職責本應分配給其餘對象)或者他要複製在其餘地方纔能找到的信息
解決方案
增長控制器
設計控制器,是他吧完成每一個系統操做的職責委派給其餘對象
High Cohesion:怎樣使對象保持有內聚、可理解和可管理,同時具備支持低耦合的附加做用
低內聚意味着對象僅靠自己工做,而且須要和大量其餘對象進行協做,全部交互也都趨向高耦合
優勢
可以更加輕鬆、清楚地理解設計
簡化維護和改進工做
一般支持低耦合
因爲內聚的類能夠用於某個特定目的,所以細粒度、相關性強的功能的重要性加強
相關文章
1.
面向對象設計的原則
2.
面向對象的設計原則
3.
面向對象設計的SOLID原則
4.
面向對象的設計原則(SOLID)
5.
面向對象的設計原則(二)
6.
面向對象的設計原則(三)
7.
面向對象設計的11原則
8.
面向對象的設計原則(六原則一法則)
9.
面向對象設計的原則——單一職責原則
10.
面向對象的程序設計原則之SOLID原則
更多相關文章...
•
Web 創建設計
-
網站建設指南
•
ACID原則是什麼?
-
NoSQL教程
•
IntelliJ IDEA代碼格式化設置
•
使用Rxjava計算圓周率
相關標籤/搜索
面向對象設計原則
原則
六大設計原則
對象
面向對象設計
原型與對象
對象的學習
面向對象的程序設計
面對對象程序設計(java)
對象和對象之間的聯繫
C&C++
網站建設指南
MyBatis教程
Hibernate教程
設計模式
計算
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
網絡層協議以及Ping
2.
ping檢測
3.
爲開發者總結了Android ADB 的常用十種命令
4.
3·15 CDN維權——看懂第三方性能測試指標
5.
基於 Dawn 進行多工程管理
6.
缺陷的分類
7.
阿里P8內部絕密分享:運維真經K8S+Docker指南」,越啃越香啊,寶貝
8.
本地iis部署mvc項目,問題與總結
9.
InterService+粘性服務+音樂播放器
10.
把tomcat服務器配置爲windows服務的方法
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
面向對象設計的原則
2.
面向對象的設計原則
3.
面向對象設計的SOLID原則
4.
面向對象的設計原則(SOLID)
5.
面向對象的設計原則(二)
6.
面向對象的設計原則(三)
7.
面向對象設計的11原則
8.
面向對象的設計原則(六原則一法則)
9.
面向對象設計的原則——單一職責原則
10.
面向對象的程序設計原則之SOLID原則
>>更多相關文章<<