Tag: 松散耦合

如何理解松耦合应用程序中的大局?

我们一直在使用松耦合和dependency injection开发代码。 很多“服务”风格的类有一个构造函数和一个实现接口的方法。 每个单独的课程都很容易理解。 但是,由于耦合的松散,查看课程并不能告诉你周围的课程或者它适合放大图片的地方。 使用Eclipse跳转到协作者并不容易,因为您必须通过接口进行操作。 如果界面是可运行的,那么对于find哪个类实际插入没有任何帮助。实际上,有必要回到DI容器定义,并尝试从那里解决问题。 以下是一个从dependency injection服务类的代码行: // myExpiryCutoffDateService was injected, Date cutoff = myExpiryCutoffDateService.get(); 这里的耦合尽可能松散。 到期date以任何方式字面上实施。 以下是在一个更加耦合的应用程序中可能看起来像什么。 ExpiryDateService = new ExpiryDateService(); Date cutoff = getCutoffDate( databaseConnection, paymentInstrument ); 从紧密耦合的版本,我可以推断,截止date是由支付工具使用数据库连接以某种方式确定。 我发现第一种风格的代码比第二种风格的代码更难理解。 你可能会争辩说,在阅读这门课时,我不需要知道截止date是如何计算出来的。 确实如此,但是如果我正在缩小一个bug或者确定增强需要插入的位置,那么这是非常有用的信息。 有谁遇到这个问题? 你有什么解决scheme? 这只是一些适应? 是否有任何工具可以让class级连线的方式可视化? 我应该让课程更大还是更融合? (有意留下这个问题容器不可知的,因为我有兴趣在任何答案)。