浅析“高内聚,低耦合”
2016-03-02 22:11
239 查看
面向对象的基本原则:多聚合,少继承;高内聚,低耦合
多聚合
聚合,是指多个元素在一起使用,组成新的元素;
在Java中有“组合类”一说:一个类是由其他的类组合而成的,因此新组成的类就拥有了其组合类的属性和方法。
少继承
继承,是指一个类继承自另一个类,新的类就可以使用(或重写或增加)被继承类的方法;
Java的继承关键字 extends ,Java遵循单一继承原则,一个类只能继承一个类,但是可以实现多个接口;
关于什么时候使用组合,什么时候使用继承
如果存在一种is-a的关系,比如说钢琴(piano)是一种乐器(instrument),乐器类向钢琴类暴露了所有的方法和属性,并且钢琴类可以重写乐器类的方法。这种情况更适合使用继承
如果存在一种has-a的关系,比如说钢琴(piano)由踏板(Pedal)和琴键(Keyboard)组成,此时钢琴和踏板(琴键)不再是父子关系。这种情况更适合使用组合
高内聚
内聚:一个模块内各个元素彼此结合的紧密程度;
在一个模块内,让每个元素之间都尽可能的紧密相连。如果某个元素与该模块的关系比较疏松的话,可能该模块的结构还不够完善,或者是该元素是多余的。
低耦合
耦合:一个软件结构内不同模块之间互连程度的度量;
一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。
关于内聚和耦合
内聚和耦合,包含了横向和纵向的关系。
功能内聚和数据耦合,是我们需要达成的目标。
横向的内聚和耦合,通常体现在系统的各个模块、类之间的关系,而纵向的耦合,体现在系统的各个层次之间的关系。
多聚合
聚合,是指多个元素在一起使用,组成新的元素;
在Java中有“组合类”一说:一个类是由其他的类组合而成的,因此新组成的类就拥有了其组合类的属性和方法。
少继承
继承,是指一个类继承自另一个类,新的类就可以使用(或重写或增加)被继承类的方法;
Java的继承关键字 extends ,Java遵循单一继承原则,一个类只能继承一个类,但是可以实现多个接口;
关于什么时候使用组合,什么时候使用继承
如果存在一种is-a的关系,比如说钢琴(piano)是一种乐器(instrument),乐器类向钢琴类暴露了所有的方法和属性,并且钢琴类可以重写乐器类的方法。这种情况更适合使用继承
如果存在一种has-a的关系,比如说钢琴(piano)由踏板(Pedal)和琴键(Keyboard)组成,此时钢琴和踏板(琴键)不再是父子关系。这种情况更适合使用组合
高内聚
内聚:一个模块内各个元素彼此结合的紧密程度;
在一个模块内,让每个元素之间都尽可能的紧密相连。如果某个元素与该模块的关系比较疏松的话,可能该模块的结构还不够完善,或者是该元素是多余的。
低耦合
耦合:一个软件结构内不同模块之间互连程度的度量;
一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。
关于内聚和耦合
内聚和耦合,包含了横向和纵向的关系。
功能内聚和数据耦合,是我们需要达成的目标。
横向的内聚和耦合,通常体现在系统的各个模块、类之间的关系,而纵向的耦合,体现在系统的各个层次之间的关系。
相关文章推荐
- 字符数组和字符串指针,指针和引用,指针和多维数组
- RabbitMQ学习小结(二)—— Work Queues[Python]
- Educational Codeforces Round 9 A. Grandma Laura and Apples 水题
- C#Winform中运用DevExpress提供的ChartControl控件绘制饼状图
- 在JSP中如何传递变量
- 二分图匹配
- 设计模式概论
- php魔术方法与魔术变量、内置方法与内置变量
- 从AOP框架学习iOS Runtime
- Matlab矩阵计算
- WebView的用法
- iOS学习----------AFNetworking(3)request创建《post请求》
- RabbitMQ学习小结(一)—— Hello World [Python]
- ACM杭电的AC回顾——2029
- 数据仓库-核心系统
- Jetty实战之 嵌入式Jetty运行web app
- 打开网页的操作
- 嵌入式Linux驱动学习之USART串口控制:基于AT91SAM9261EK
- Java中堆(heap)和栈(stack)区别
- win2012 服务器IIS 8.0 搭建FTP,VS2015发布网站(二)Visual Studio发布网站