耦合和解耦的概念解析!

转载 2012年03月30日 11:08:54
耦合就是两个层之间有依赖关系?
==
同一个层也可能有依赖关系

看见有解耦的方法就是在相互依赖的两层之间加一层,可是新加的一层不是又和原来的两层有耦合关系了吗?
==
解耦的方式是让设计依赖于抽象,而不是依赖于实现,看看设计模式的原则

到底什么是耦合??
==
A明确地使用B资源

publci class A
{
         B b;
}

public class B
{

}

现在A依赖于B

interface IX
{
...
}

public class A
{
      IX i;
       public A(IX  i)
      {
              this.i = i;
      }       
}

public class B:IX
{

}

调用的时候,我可以决定用哪个实现接口的类,甚至可以是从配置文件反射生成

A  a = new A(new B());
也可能因为某个条件
A  a = new A(new C());

这样 A依赖的是抽象的接口IX,而不是具体的类B或者C

追问

恕小弟愚昧,弱弱的问下,这里所说的“依赖抽象的接口不依赖现实”,是不是说不管类B,类C编译的版本怎么变,但始终可以调用接口来调用类B,类C,所以类A不用编译了?
 

回答

1. 如果B发生了修改,那我们可以使用C,因为我们依赖的是接口,而不是具体的类(对象) 
打个比方,汽车制造者可以依赖于轮胎这个抽象的东西,但不能依赖于具体的品牌比如"风神轮胎"

2. 当需求改变的时候,我们需要修改的只有Main函数所在的类(甚至它都可能不用修改,只需要修改配置文件就可以)。
重新编译程序的代价很大,打个比方,windows有更新了,只是提供补丁,而不是给一版新的windows吧

软件设计程序的基本思想是,当需求改变的时候,我们的应用程序改变最小

相关文章推荐

ajax完整教程

Ajax 完整教程 第 1 页 Ajax 简介 Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性...

servlet API 解耦访问和耦合访问的区别

一.与Servlet API解耦的访问方式 1.为了避免与Servlet API耦合在一起,方便Action类做单元测试,   Struts2对HttpServletRequest、HttpSes...

java 完全解耦和弱耦合

//完全解耦是尽最大程度降低类与类之间的耦合度,使程序具有很好的扩展性,便于修改 //耦合:类和类、模块和模块之间存在依赖关系,如果修改了某个实现就需要改一堆已经编写好的代码,这就是代码耦合度较高。/...

用java观察者模式解耦经典三层架构

三层架构是一个非常经典的架构模式,根据系统的职责不同,将系统分成了表现层,逻辑层和数据访问层,并且配合数据实体进行数据传输,可以大大的封装性和复用性。 经典的三层架构图: 我们...

腾讯公司抽奖活动咨询电話是多少√腾讯qq抽奖活动咨询电話是多少

腾讯公司 总 部 电 话《95013+2195+0586》抽奖电话《95013+2195+0586》活动热线《95013+2195+0586》非常6+1 电 话《95013+2195+0586》幸 运...

用java观察者模式解耦经典三层架构

三层架构是一个非常经典的架构模式,根据系统的职责不同,将系统分成了表现层,逻辑层和数据访问层,并且配合数据实体进行数据传输,可以大大的封装性和复用性。 经典的三层架构图: 我们再深入到架构...
  • xqf309
  • xqf309
  • 2014-07-28 15:05
  • 10858

强耦合和解耦合的一种情况-pimpl

//x.hpp class X { public: void getX(){...} } //c.h #include class C { public: void getC(); p...

概念篇之高内聚低耦合

高内聚(High Cohesion)  高内聚是另一个普遍用来评判软件设计质量的标准。内聚,更为专业的说法叫功能内聚,是对软件系统中元素职责相关性和集中度的度量。如果元素具有高度相关的职责,除了...

高内聚,低耦合的概念剖析

原文链接:http://www.cnblogs.com/xiaopin/archive/2010/08/27/1809928.html 1. 概念        内聚是从功能角...
  • ccnyou
  • ccnyou
  • 2012-08-22 23:34
  • 5328

有关松散耦合与接口的概念介绍

面向对象的软件开发和设计的目标之一就是高聚合性和低耦合性。用简单直白的说法,最大聚合就是指类(模块)的封装性要好,功能紧凑而独立;最小耦合就是指类(模块)之间的关联和牵扯越少越好。    用术语解释:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)