降低对象之间的耦合关系
2017-09-26 14:35
253 查看
什么叫耦合?
耦合是指两个实体相互依赖对方的一个程度。比如在计算机硬件里,要设计一个系统,这个系统有一块主板,假如这个主板依赖于某种图形显示卡,则就意味着我们实现必须实现开发好这块图形显示卡,如果没有图形显示卡,则主板没法设计。更严重的是图形显示卡又依赖于某种芯片,则必须先有芯片,才能开发出图形显示卡,接着才能开发出这种主板。三者之间的开发工作是串行的。这种依赖显然是需要避免的。因此我们必须将系统的耦合程度降低。
如何降低呢?可以考虑在不同硬件之间通过接口来进行衔接,定义好接口之后,任意的图形显示卡只要符合这个接口规范就可以接入到主板中,芯片、主板和接口的开发就可以同时进行了。
此外,耦合度过高有什么后果呢?[/b]
(1)开发效率低下,因为成员之间的开发工作不能同时进行。
(2)如果一个系统原有的设计过于耦合凌乱,使得对任何一处的更改都变得非常困难。就像一堆粘合在一起的物品,单独剥离某一部分是不可能的,程序员必须对全盘进行考虑,因此复杂度大大加强,难于理解,难于维护。因此程序员只好在上面打丑陋的补丁。其实任何一个程序员都想做出一流的东西来,对打补丁这件事厌恶透顶,如果时间允许,我们宁可从头开发一个优美的东西。
例题1:java中可能存在耦合的代码
package com.finalnull;
class A {
public void f(){}
}
class B {
public void test(){
A a = new A();
a.f();
}
}
例题2:降低例题1的这种耦合关系
package com.finalnull;
interface I {
public void f();
}
class A implements I {
public void f(){}
}
class B {
public void test(I imps){
//也可以将接口的引用imps由方法的局部变量变更为成员变量
imps.f();
}
}
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
耦合是指两个实体相互依赖对方的一个程度。比如在计算机硬件里,要设计一个系统,这个系统有一块主板,假如这个主板依赖于某种图形显示卡,则就意味着我们实现必须实现开发好这块图形显示卡,如果没有图形显示卡,则主板没法设计。更严重的是图形显示卡又依赖于某种芯片,则必须先有芯片,才能开发出图形显示卡,接着才能开发出这种主板。三者之间的开发工作是串行的。这种依赖显然是需要避免的。因此我们必须将系统的耦合程度降低。
如何降低呢?可以考虑在不同硬件之间通过接口来进行衔接,定义好接口之后,任意的图形显示卡只要符合这个接口规范就可以接入到主板中,芯片、主板和接口的开发就可以同时进行了。
此外,耦合度过高有什么后果呢?[/b]
(1)开发效率低下,因为成员之间的开发工作不能同时进行。
(2)如果一个系统原有的设计过于耦合凌乱,使得对任何一处的更改都变得非常困难。就像一堆粘合在一起的物品,单独剥离某一部分是不可能的,程序员必须对全盘进行考虑,因此复杂度大大加强,难于理解,难于维护。因此程序员只好在上面打丑陋的补丁。其实任何一个程序员都想做出一流的东西来,对打补丁这件事厌恶透顶,如果时间允许,我们宁可从头开发一个优美的东西。
例题1:java中可能存在耦合的代码
package com.finalnull;
class A {
public void f(){}
}
class B {
public void test(){
A a = new A();
a.f();
}
}
例题2:降低例题1的这种耦合关系
package com.finalnull;
interface I {
public void f();
}
class A implements I {
public void f(){}
}
class B {
public void test(I imps){
//也可以将接口的引用imps由方法的局部变量变更为成员变量
imps.f();
}
}
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
相关文章推荐
- 本文是笔者根据数据库编程经验,利用C++语言的模板、继承、授权、多态等面向对象特性,借鉴命令模式,实现了对象在关系数据中的存储,降低应用系统与数据库之间的耦合,提高开发效率。
- CWnd类的对象和Windows窗口之间的关系
- 一张图说明 函数, 实例(对象), 原型之间的关系
- UML:UMLl类图符号 对象与类之间相互关系的类型包括:依赖、关联、聚合、组合、泛华、实现等。
- 细粒度依赖(一)通过数据字典找到数据库对象之间的引用关系
- 窗口类、窗口类对象与窗口 三者之间关系
- mybatis对象之间映射关系以及数据库表建立的时候外键的添加
- 会计对象 会计科目 会计账户之间的关系
- 构造函数,对象原型,实例对象三者之间的关系
- 你可知道类和对象,以及他们之间的关系?
- 【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系
- MFC类的组织(类之间的关系)与WinMain函数、theAPP、构造函数、以及全局变量(对象)之间的关系
- VS2010/MFC编程入门之四十(文档、视图和框架:各对象之间的关系)
- 面向对象中类与类之间的关系
- OutMan——面向对象的三大特性、对象和对象之间的关系以及动态类型检测方法
- oracle中的数据库、用户、方案、表空间、表对象之间的关系
- 创建对象与括号之间的关系
- 关于js中,原型对象,原型链,构造函数,实例之间关系的理解与区别
- 对象之间的关系有哪些,如何使用面向对象语言表达
- 跟踪 shiro debug 信息,诠释 shiro 之间各类对象之间的关系