7.5 GRASP原则五:高内聚 High Cohesion
GRASP原則五:高內聚 High Cohesion
? How to keep objects focused, understandable and manageable, and as a side effect support Low Coupling?
如何使對象功能專注、可理解、可管理,同時又支持 低耦合?
5.1 GRASP rule 5:High Cohesion
? Name:High Cohesion 高內聚
? Problem:
? How to keep objects focused, understandable and manageable, and as a side effect support Low Coupling?
? Solution:
? Assign responsibility so cohesion remains high 分配職責時保證高內聚
? Dosage(用法):
? Used as an evaluation tool 用作評價工具
? 更多的是一種理念,沒有具體的可操作原則
5.2 Cohesion Defined
? 衡量概念之間相關度的兩個指標
? Cohesion,內聚:模塊內元素之間聯系緊密的程度,比如,一個類內部的操作之間
? Coupling,耦合:兩個模塊之間聯系的強度
? 內聚的“最佳實踐”
? 一個對象完成的功能不要太多 small number of responsibilities
? 這些功能都是同一類別的 highly related responsibilities
? 例如,教授:主要任務就是教學;研究員:主要任務是科研
? 評判練習,哪個更內聚
? 一個類有2000行源代碼100個方法
? 另一個類有200行源代碼10個方法
? 誰能保證任務重的對象在完成功能時不會引用到類外部的資源(增加了耦合度)
? 比喻: “不是一家人,不進一家門”
? “人” compared to “職責、操作”
? “門” compared to “模塊、類”
5.4 Discuss: Cohesion
? 類低內聚的具有癥狀 A class with low cohesion
? 做了許多相互無關的工作 does many unrelated things
? 做了太多工作 does too much work
? 類低內聚的的原因 Low cohesion classes often represent
? 大粒度的抽象 a very large grain of abstraction
? 做了太多本應該委托給其他類去做的工作 have taken on responsibilities that should have been delegated to other objects
? 類低內聚的問題
? 難以理解 Hard to understand
? 難以重用 Hard to reuse
? 難以維護 Hard to maintain
? 沒有穩定的時刻,總是在修改 (通常都會高耦合)
小結
? 高內聚的類
? 有較少數量的操作,操作的性質基本一致,不會做太多的事情
? 如果同類別的工作太多,則會定義新的類分擔任務,相互間合作
? 高內聚的類有許多有點
? 易于維護
? 易于理解
? 易于重用
? 高內聚也是一種評估性原則,用于評估所有的設計決策是否合適
It is an evaluative principle that a designer applies while evaluating all design decisions
轉載于:https://www.cnblogs.com/mayZhou/p/10550041.html
總結
以上是生活随笔為你收集整理的7.5 GRASP原则五:高内聚 High Cohesion的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringMVC 上传文件and过滤器
- 下一篇: 苹果推出全新 Today at Appl