当一个类只调用另一个有多种方法的类上的一个方法时,如何减少耦合?

时间:2011-04-02 05:59:38

标签: java dependency-injection coupling

我有一个类(让我们称之为MyService)在它的构造函数中接受两个依赖项。第一个与问题无关。第二个是PaymentDetails。 PaymentDetails的寿命比MyService长,后者由工厂创建,用于处理此特定请求。

MyService.process()中,它:

  • 做了第一个依赖的一些东西,
  • 构造一个new TransactionDetails()对象并在其上设置各种内容,
  • 致电myPaymentDetails.setTransactionDetails( td );
  • 返回一些内容,说明下一个页面中的哪个页面

PaymentDetails必然会有很多方法。它是一个实体样式对象,当用户逐步浏览大约5页时,信息就会建立在该对象中。

困扰我的是,写作我的服务类取决于整个PaymentDetails,但只调用一个方法。

这让我感到困扰,因为:

  • 它将限制重用服务类的能力
  • 通过阅读方法签名
  • 无法理解真正的依赖关系

我的问题是:

解决此问题的最佳方法是什么,以便我的服务类具有最小的依赖性?

2 个答案:

答案 0 :(得分:13)

您可以创建一个简单的界面:

public interface TransactionAcceptor {
    void setTransactionDetails(TransactionDetails td);
}

PaymentDetails声明它实现了接口:

public class PaymentDetails implements TransactionAcceptor {
    ...
}

当然它已经实现了所需的方法。然后MyService只需要处理TransactionAcceptor界面,而不是PaymentDetails

答案 1 :(得分:4)

添加interface Transactionable或其他内容,让PaymentDetails实现它。 在MyService中只处理'Transactionables'。