怎么让方法之间的互相调用解耦?

lightpig 发布于 2014/09/16 09:44
阅读 324
收藏 0
 通常类库中类A像这样依赖其他类:
class A{
   public fun(){
       int a = B.fun();
       int b = C.fun(a);

   }
}

class B{
   public fun(){

   }
}
class C{
   public fun(){

   }
}

将类A拿到其他地方,就需带着类B,类C,有没什么什么办法让他们完全解耦,类A可以独立的拿到到其他地方使用?而类B,类C同样可以拿到其他地方单独使用? 

当然,不能将类A写得很庞大,写成3个类本身就是为了单一化功能的。

加载中
0
临峰不畏
临峰不畏
将A::fun()中的a,b提出来,作为参数。这样,A与B,C没有直接耦合。将耦合性转移到了A::fun()的使用者。
lightpig
lightpig
回复 @last : 这个确实已经很好,追求极致的解耦可能就钻牛角尖了
last
last
回复 @Midnight : 参数类型这里可以用接口
Midnight
Midnight
你以为作为参数就不依赖了吗? 参数类型呢?不依赖吗?
0
wlrjgzs
wlrjgzs
用接口吧
0
lightpig
lightpig
接口确实不错,我想起spring,它的原理是否和接口类似
0
0
疏影横斜
疏影横斜
简单的用一下设计模式,简单工厂貌似就可以~~
0
lightpig
lightpig

spring的方式会不会比设计模式好一些,不过我对设计模式和spring都只是接触一点还没办法用它们咋做这些事情。只是做项目时突然碰到这样的情况:

一个框架总是有基础类库,然后框架中其他类库引用使用这些基础类库,所以一个框架整体似乎总是高内聚的,难于拆分使用。如果能够更好的拆分开,岂不可以自由组织出更多的东西。也许还没好好学习过那些优秀的框架

返回顶部
顶部