0

我在 2 个类中使用相同的方法,将字段从一个对象复制到构建器。我想重构它,但我不知道是否应该在实用程序类中创建静态方法或将其抽象为超类。

共享此代码的类是 Bean 和多线程应用程序的一部分。

该方法如下:

protected static void copyPartyGroup(Message.Builder msgBuilder, 
    final PartyGroup partyIDsGroup, Party.Builder rartyBuilder) {

    rartyBuilder.setPartyID(partyIDsGroup.getId())
    ....

    msgBuilder.setID(partyIDsGroup.getId())

    ....

}

非常感谢您的帮助。

4

2 回答 2

4

您还可以在 java 8 中使用 trait,它是一个带有默认方法的接口

见:https ://opencredo.com/traits-java-8-default-methods/

或:https ://dzone.com/articles/using-traits-in-java-8

如果您的两个类不共享相同的父结构,请不要使用超抽象类,如果创建这个超类的唯一原因是共享您的方法 copyPartyGroup不是一个好习惯。

见:里氏替换原则

在此处输入图像描述

如果您想尊重单一职责原则:

我认为您必须创建一个服务类。rartyBuilder.setPartyID在你的情况下,可能是一个线程安全的单例,它具有和 的同步方法msgBuilder.setID。(见按需初始化持有人成语

在此处输入图像描述

于 2017-09-28T11:02:00.830 回答
1

如果您可以提取静态方法,那么最好这样做。

使用继承来共享代码会使您的代码耦合起来,并且以后很难解开。

于 2017-09-29T18:35:37.623 回答