面向對象原則:高內聚、低耦合。多聚合、少繼承
2015-05-28 18:13:00
面向對象的基本原則:多聚合,少繼承。低耦合,高內聚.
一、高內聚、低耦合
1、概述:
內聚:每個模塊儘可能獨立完成自己的功能,不依賴於模塊外部的代碼。
耦合:模塊與模塊之間接口的複雜程度,模塊之間聯繫越複雜耦合度越高,牽一髮而動全身。
目的:使得模塊的「可重用性」、「移植性」大大增強
通常程序結構中各模塊的內聚程度越高,模塊間的耦合程度就越低
2、模塊粒度:
1)函數
高內聚:儘可能類的每個成員方法只完成一件事(最大限度的聚合)
低耦合:減少類內部,一個成員方法調用另一個成員方法
2)類
高內聚低耦合:減少類內部,對其他類的調用
3)功能塊
高內聚低耦合:減少模塊之間的交互複雜度(接口數量,參數數據)
橫向:類與類之間、模塊與模塊之間
縱向:層次之間
儘可能,內容內聚,數據耦合
二、多聚合、少繼承
聚合:事物A由若干個事物B組成,體現在類與類之間的關係就是:「類B的實例」作為「類A」的「成員對象」出現。(不就是內部類嘛,意思就是多使用內部類,也不一定是內部類,可能該類的一個成員變量是另一個類的對象,少使用繼承extends)
繼承:顧名思義,體現在類與類之間的關係就是:「類B」被類A所繼承
顯然,當觀察類B所具有的行為能力時,「聚合」方式更加清晰。
典型應用:java適配器模式中,優選「對象適配器」,而不是「類適配器」
原文網址:https://read01.com/GBe76m.html
分享到:
相关推荐
其他特征:抽象关联,聚合,组合,内聚,耦合 2. String是最基本的数据类型吗? String 和StringBuffer的区别? 答案:String不是一最基本的数据类型。 STRING的长度是不可变的,STRINGBUFFER的长度是可变的。 如果...
D) 以较低的成本开发出高质量的软件 二、 判断题 1. 软件就是程序,编写软件就是编写程序。(×) 2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。(×) 3. 结构化方法的工作模型是使用螺旋模型进行...
17.14 高内聚 17.15 参考资料 第18章 使用GRASP的对象设计示例 18.1 什么是用例实现 18.2 制品注释 18.3 下一步工作 18.4 NextGen迭代的用例实现 18.5 Monopoly迭代的用例实现 18.6 过程:迭代和进化式对象...
17.14 高内聚 17.15 参考资料 第18章 使用GRASP的对象设计示例 18.1 什么是用例实现 18.2 制品注释 18.3 下一步工作 18.4 NextGen迭代的用例实现 18.5 Monopoly迭代的用例实现 18.6 过程:迭代和进化式对象...
17.14 高内聚 17.15 参考资料 第18章 使用GRASP的对象设计示例 18.1 什么是用例实现 18.2 制品注释 18.3 下一步工作 18.4 NextGen迭代的用例实现 18.5 Monopoly迭代的用例实现 18.6 过程:迭代和进化式对象...
17.14 高内聚 17.15 参考资料 第18章 使用GRASP的对象设计示例 18.1 什么是用例实现 18.2 制品注释 18.3 下一步工作 18.4 NextGen迭代的用例实现 18.5 Monopoly迭代的用例实现 18.6 过程:迭代和进化式对象...
17.14 高内聚 17.15 参考资料 第18章 使用GRASP的对象设计示例 18.1 什么是用例实现 18.2 制品注释 18.3 下一步工作 18.4 NextGen迭代的用例实现 18.5 Monopoly迭代的用例实现 18.6 过程:迭代和进化式对象...
17.14 高内聚 17.15 参考资料 第18章 使用GRASP的对象设计示例 18.1 什么是用例实现 18.2 制品注释 18.3 下一步工作 18.4 NextGen迭代的用例实现 18.5 Monopoly迭代的用例实现 18.6 过程:迭代和进化式对象...
17.14 高内聚 17.15 参考资料 第18章 使用GRASP的对象设计示例 18.1 什么是用例实现 18.2 制品注释 18.3 下一步工作 18.4 NextGen迭代的用例实现 18.5 Monopoly迭代的用例实现 18.6 过程:迭代和进化式对象...
17.14 高内聚 17.15 参考资料 第18章 使用GRASP的对象设计示例 18.1 什么是用例实现 18.2 制品注释 18.3 下一步工作 18.4 NextGen迭代的用例实现 18.5 Monopoly迭代的用例实现 18.6 过程:迭代和进化式对象...
桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关 桥梁模式 联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是 继承关系,从而使两者可以独立的...