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

WW.*_*WW. 6 java dependency-injection coupling

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

MyService.process(),它:

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

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

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

这困扰我,因为:

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

我的问题是:

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

Whi*_*g34 13

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

public interface TransactionAcceptor {
    void setTransactionDetails(TransactionDetails td);
}
Run Code Online (Sandbox Code Playgroud)

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

public class PaymentDetails implements TransactionAcceptor {
    ...
}
Run Code Online (Sandbox Code Playgroud)

当然,它已经实现了所需的方法.然后MyService只需要处理TransactionAcceptor接口而不需要配合PaymentDetails.