关闭

耦合和解耦的概念解析!

标签: classwindows设计模式制造c
6057人阅读 评论(2) 收藏 举报
分类:
耦合就是两个层之间有依赖关系?
==
同一个层也可能有依赖关系

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

到底什么是耦合??
==
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吧

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:245478次
    • 积分:3088
    • 等级:
    • 排名:第11181名
    • 原创:44篇
    • 转载:113篇
    • 译文:0篇
    • 评论:18条
    最新评论