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

Java 当一个类只调用另一个具有多个方法的类上的一个方法时,如何减少耦合?,java,dependency-injection,coupling,Java,Dependency Injection,Coupling,我有一个类(我们称之为MyService),它在构造函数中接受两个依赖项。第一个问题与这个问题并不完全相关。第二个是PaymentDetails。PaymentDetails的使用寿命比MyService更长,MyService由工厂创建以处理此特定请求 在MyService.process()中,它: 对第一个依赖项做一些事情 构造一个新TransactionDetails()对象并在其上设置各种内容 调用myPaymentDetails.setTransactionDetails(td)

我有一个类(我们称之为
MyService
),它在构造函数中接受两个依赖项。第一个问题与这个问题并不完全相关。第二个是
PaymentDetails
。PaymentDetails的使用寿命比MyService更长,MyService由工厂创建以处理此特定请求

MyService.process()
中,它:

  • 对第一个依赖项做一些事情
  • 构造一个
    新TransactionDetails()
    对象并在其上设置各种内容
  • 调用myPaymentDetails.setTransactionDetails(td)
  • 返回说明向导中下一页的内容
PaymentDetails
上必然有许多方法。它是一个实体样式的对象,当用户逐步通过一系列大约5页的页面时,信息被构建到其中

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

这让我感到困扰,因为:

  • 它将限制重用服务类的能力
  • 通过读取方法签名,不可能理解真正的依赖关系是什么
我的问题是:


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

添加一个
接口Transactionable
或其他东西,并让PaymentDetails实现它。
在MyService中,仅处理“Transactionables”。

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

public interface TransactionAcceptor {
    void setTransactionDetails(TransactionDetails td);
}
public class PaymentDetails implements TransactionAcceptor {
    ...
}
PaymentDetails
声明它实现了接口:

public interface TransactionAcceptor {
    void setTransactionDetails(TransactionDetails td);
}
public class PaymentDetails implements TransactionAcceptor {
    ...
}
当然,它已经实现了所需的方法。然后,
MyService
只需要处理
TransactionAcceptor
接口,而不需要与
PaymentDetails
耦合