6

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

MyService.process()中,它:

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

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

困扰我的是,正如我所写的那样,我的服务类依赖于整个PaymentDetails但只调用一个方法。

这让我很困扰,因为:

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

我的问题是:

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

4

2 回答 2

13

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

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

已经PaymentDetails声明它实现了接口:

public class PaymentDetails implements TransactionAcceptor {
    ...
}

当然,它已经实现了所需的方法。那么MyService只需要处理TransactionAcceptor接口而不是耦合PaymentDetails

于 2011-04-02T06:10:26.200 回答
4

添加一个interface Transactionable或一些东西并让 PaymentDetails 实现它。在 MyService 中仅处理“Transactionables”。

于 2011-04-02T06:10:02.523 回答