2017-09-28 37 views
0

我在2個類中將同一個方法的字段從一個對象複製到構建器中。我想重構它,但我不知道是否應該在實用程序類中創建靜態方法或將其抽象爲超類。超類與常用代碼的工具類

共享此代碼的類是Beans和多線程應用程序的一部分。

的方法是這樣的:

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

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

    msgBuilder.setID(partyIDsGroup.getId()) 

    .... 

} 

非常感謝您的幫助。

回答

2

您也可以在Java中使用8特質,它的默認方法

看到一個界面:https://opencredo.com/traits-java-8-default-methods/

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

如果你的兩個類不共用同一母體結構,唐不使用超級抽象類,如果創建這個超類的唯一理由是分享你的方法copyPartyGroup不是一個好習慣。

見:里氏替換原則

enter image description here

如果你要尊重單一責任原則:

我認爲你必須創建一個服務類。 在你的情況下,可能是一個帶有同步方法的線程安全單例,用於rartyBuilder.setPartyIDmsgBuilder.setID。 (見Initialization-on-demand holder idiom

enter image description here

1

如果你可以提取靜態方法,那麼最好是隻做到這一點。

使用繼承來共享代碼會耦合您的代碼,並且很難以後解開。