设计模式:高内聚,低耦合
2017-04-23 19:22
357 查看
我是一个JAVA初学者,以前只知道把程序写完写出来就好,再加上足够多的注解就算完成了,从不关心程序是否写的合理,更不知道什么叫设计模式,更不要说是低耦合,高内聚是什么东西,直到培训的老师讲到这,才开始找资料来看,顺便写下自己的理解;
1.低耦合
先要知道什么是耦合,耦合是元素对其他元素的依赖,连接的度量;一个元素必须在另一个元素存在时才能正常工作,或者有调用另一个元素中的方法,或者与另一个元素相关就说这两个元素耦合;像我们编写JAVA程序中的类就有如下几种情况是耦合:
1.元素B是元素A的属性,或者元素A引用了元素B的实例(这包括元素A调用的某个方法,其参数中包含元素B)
2.元素A调用了元素B的方法
3.元素A直接或间接成为元素B的子类
4.元素A是接口B的实现
耦合使得我们和代码可变性低,因为代码中的元素相耦合,使得在一个类要变的情况下其他的类也必须做出相应的变动,这使我们的代码的重复利用变得很麻烦,有时甚至一点小改动而导致代码要重头写;
正是耦合的不足,才强调要低耦合,元素要完全独立是不可能的,我们只能从中找到一个平衡点,尽量和使我们的代码耦合度低,我觉得在写代码时可以多使用接口而不是继承,因为继承就是一种耦合,如果子类A继承了父类B,不论是直接或间接的继承,子类A都必将依赖父类B;子类A必须使用在存在父类B的环境中,父类B不存在子类A就不能使用,这样将影响子类A的可移植性。一旦父类B发生任何变更,更改或去掉一个函数名,或者改变一个函数的参数,都将导致子类A不得不变更,甚至重写。假如父类B的子类数十上百个,甚至贯穿这个项目各个模块,这样的变更是灾难性的;这只是一种不成熟的方法,真正要达到高手的地步,还是要多积累经验,所谓熟能生巧嘛!
2.高内聚
内聚:一个模块内各个元素彼此结合的紧密程度;与耦合相反,内聚是在一个模块中,而耦合是强调整个项目中各模块的之间的关系;在一个模块中各个元素结合的越紧密,代码质量越高;在程序设置中高内聚就是要程序模块内、类内要保持高度的联系,也就是属性间、方法间、属性方法间要高度紧密、不能脱离联系。要么方法中应该存在某些属性的参数,要么属性中要返回方法的结果,这样能够充分调用代码,减少代码的冗余。
<!--EndFragment-->
1.低耦合
先要知道什么是耦合,耦合是元素对其他元素的依赖,连接的度量;一个元素必须在另一个元素存在时才能正常工作,或者有调用另一个元素中的方法,或者与另一个元素相关就说这两个元素耦合;像我们编写JAVA程序中的类就有如下几种情况是耦合:
1.元素B是元素A的属性,或者元素A引用了元素B的实例(这包括元素A调用的某个方法,其参数中包含元素B)
2.元素A调用了元素B的方法
3.元素A直接或间接成为元素B的子类
4.元素A是接口B的实现
耦合使得我们和代码可变性低,因为代码中的元素相耦合,使得在一个类要变的情况下其他的类也必须做出相应的变动,这使我们的代码的重复利用变得很麻烦,有时甚至一点小改动而导致代码要重头写;
正是耦合的不足,才强调要低耦合,元素要完全独立是不可能的,我们只能从中找到一个平衡点,尽量和使我们的代码耦合度低,我觉得在写代码时可以多使用接口而不是继承,因为继承就是一种耦合,如果子类A继承了父类B,不论是直接或间接的继承,子类A都必将依赖父类B;子类A必须使用在存在父类B的环境中,父类B不存在子类A就不能使用,这样将影响子类A的可移植性。一旦父类B发生任何变更,更改或去掉一个函数名,或者改变一个函数的参数,都将导致子类A不得不变更,甚至重写。假如父类B的子类数十上百个,甚至贯穿这个项目各个模块,这样的变更是灾难性的;这只是一种不成熟的方法,真正要达到高手的地步,还是要多积累经验,所谓熟能生巧嘛!
2.高内聚
内聚:一个模块内各个元素彼此结合的紧密程度;与耦合相反,内聚是在一个模块中,而耦合是强调整个项目中各模块的之间的关系;在一个模块中各个元素结合的越紧密,代码质量越高;在程序设置中高内聚就是要程序模块内、类内要保持高度的联系,也就是属性间、方法间、属性方法间要高度紧密、不能脱离联系。要么方法中应该存在某些属性的参数,要么属性中要返回方法的结果,这样能够充分调用代码,减少代码的冗余。
<!--EndFragment-->
相关文章推荐
- C++性能系列之高内聚低耦合的设计模式
- 设计模式-高内聚、低耦合
- 委托模式与工厂方法——低耦合与高内聚设计原则初探续
- 什么叫做耦合(设计模式)(转载)
- 面向对象设计之高内聚、低耦合【转】
- IOS 动画设计(1)——高内聚,低耦合原则
- PHP耦合设计模式的理解
- 设计模式 业务封装 & 紧耦合 vs. 松耦合 & 简单工厂模式
- [翻译-ASP.NET MVC]Contact Manager开发之旅迭代4 - 利用设计模式松散耦合
- 函数设计应做到低耦合,高内聚
- 耦合与内聚的应用 —— 事件驱动模式与解耦
- Java中利用反射的思想解决工厂设计模式的耦合问题
- 设计模式松散耦合
- PHP耦合设计模式的理解
- 小议解耦合--应用设计模式
- C++设计模式10--命令模式(二)(Command)--降低请求发送者与接收者耦合
- 设计模式GRASP和GoF是怎样解决耦合的问题
- PHP面向接口编程——耦合设计模式 简单范例
- 学习笔记-设计模式GRASP和GoF是怎样解决不同情况的耦合问题
- 函数设计应做到低耦合,高内聚