当一个类仅调用另一个有多个方法的类中的一个方法时,如何降低耦合度?

6
我有一个类(我们称之为MyService),它在其构造函数中接受两个依赖项。第一个对于问题并不是很重要。第二个是PaymentDetails。PaymentDetails的生命周期比MyService更长,由工厂创建以处理此特定请求。

MyService.process()中,它:

  • 对第一个依赖项进行一些操作,
  • 构造一个new TransactionDetails()对象并设置各种属性,
  • 调用myPaymentDetails.setTransactionDetails(td);
  • 返回下一步向导中的哪个页面

PaymentDetails必须具有许多方法。它是一种实体样式的对象,其中信息随着用户通过约5个页面的系列而建立。

令我困扰的是,按照现有写法,我的服务类取决于整个PaymentDetails,但只调用了一个单一方法。

这让我感到困扰,因为:

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

我的问题是:

最好的方法是什么,以使我的服务类具有最小的依赖关系?

2个回答

13

你可以创建一个简单的接口:

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

PaymentDetails 声明它实现了该接口:

public class PaymentDetails implements TransactionAcceptor {
    ...
}

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


4
添加一个名为Transactionable的接口或类,并让PaymentDetails实现它。 在MyService中仅处理“Transactionables”对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接