gpt4 book ai didi

java - 公共(public)代码的父类(super class)与实用程序类

转载 作者:行者123 更新时间:2023-12-01 17:54:24 25 4
gpt4 key购买 nike

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

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

方法如下:

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

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

msgBuilder.setID(partyIDsGroup.getId())

....

}

非常感谢您的帮助。

最佳答案

你还可以使用java 8中的一个trait,它是一个带有默认方法的接口(interface)

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

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

如果您的两个类不共享相同的父结构,请不要使用 super 抽象类,如果创建此 super 类的唯一原因是共享您的方法copyPartyGroup不是一个好的做法.

参见:里氏替换原理

enter image description here

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

我认为你必须创建一个服务类。在您的情况下,可能是一个线程安全的单例,具有 rartyBuilder.setPartyIDmsgBuilder.setID 的同步方法。 (参见Initialization-on-demand holder idiom)

enter image description here

关于java - 公共(public)代码的父类(super class)与实用程序类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46467191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com