动态解耦 静态解耦

本文探讨了静态解耦和动态解耦的概念。静态解耦通过依赖接口来减少耦合,但仍然在编译期确定依赖关系。动态解耦利用反射和配置文件,使依赖关系在运行时确定,实现更灵活的代码结构,遵循开放封闭原则。文中通过示例代码展示了如何实现这两种解耦方式。
摘要由CSDN通过智能技术生成

1.静态解耦:
    先解释下我理解的静态耦合,指的是编译期依赖关系已经确定,在运行时环境中,代码间的依赖关系不能改变。例如,我们在开发中经常会说的“把代码写死了”。静态是相对动态的、运行时的、可配置的和插件式的。
    那么在静态环境中,如何解耦?主要是依赖接口。下面举两个小例子简单说明下:
    EX1: 假设一个人不知道接口的意义,那么他写出两个类的依赖关系一般如下:

Java代码  收藏代码
  1. public   class  ClassA {  
  2.     public   void  invoke() {  
  3.     [color=blue]ClassB b = new  ClassB();  
  4.     b.action();[/color]         //do some other things   
  5.     }  
  6. }  
  7.   
  8. public   class  ClassB {  
  9.     public   void  action() {  
  10.     //do something   
  11.     }  
  12. }  


   我们常常说的“耦合”,我认为一个重要的因素就是环境的变,如果没有变化的环境,那么多么的“耦合”也是无所谓的;假如现在变化来了,ClassA中的 invoke()方法不符合现在的需求了,而且需要改变的部分恰好是invoke()中的前两行,也正是和ClassB耦合的那部分,而ClassB的 action方法还在别的代码有调用。现在如果更改,则必须修改invoke()的前两行代码。这个是面向对象中非常忌讳的。所谓代码应该对扩展开放,对修改封闭 ,那么我们用“面向接口编程”的思想对他进行一下改造吧。

Java代码  收藏代码
  1. public   class  ClassA {  
  2.     public   void  invoke() {  
  3.     Interface i = Factory.newInstance().produce(1 );  
  4.     i.action();  
  5.     }  
  6. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值