耦合和解耦的概念解析!

本文详细解析了软件设计中耦合的概念及其对程序的影响,并介绍了如何通过依赖抽象而非具体实现来达到解耦的目的,使得系统更加灵活,易于维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载于:http://blog.youkuaiyun.com/hb0746/article/details/7410524

耦合和解耦的概念解析!

    耦合就是两个层之间有依赖关系?
    ==
    同一个层也可能有依赖关系
    
    看见有解耦的方法就是在相互依赖的两层之间加一层,可是新加的一层不是又和原来的两层有耦合关系了吗?
    ==
    解耦的方式是让设计依赖于抽象,而不是依赖于实现,看看设计模式的原则
    
    到底什么是耦合??
    ==
    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吧
    
    软件设计程序的基本思想是,当需求改变的时候,我们的应用程序改变最小
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值