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.
shell編譯問題
2.
mipsel 編譯問題
3.
添加xml
4.
直方圖均衡化
5.
FL Studio鋼琴卷軸之畫筆工具
6.
中小企業爲什麼要用CRM系統
7.
Github | MelGAN 超快音頻合成源碼開源
8.
VUE生產環境打包build
9.
RVAS(rare variant association study)知識
10.
不看後悔系列!DTS 控制檯入門一本通(附網盤鏈接)
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
面向對象設計的原則
2.
面向對象的設計原則
3.
面向對象設計的SOLID原則
4.
面向對象的設計原則(SOLID)
5.
面向對象的設計原則(二)
6.
面向對象的設計原則(三)
7.
面向對象設計的11原則
8.
面向對象的設計原則(六原則一法則)
9.
面向對象設計的原則——單一職責原則
10.
面向對象的程序設計原則之SOLID原則
>>更多相關文章<<