Ich habe eine Client-Bibliothek, in der ich Remote-Anrufe an meinen Rest-Service mache und dann List<DataResponse>
an den Kunden zurücksende, der unsere Bibliothek mit der Antwort aufruft, die ich von meinem REST-Service bekomme Fehler, wenn irgendwelche um DataResponse
-Objekt gewickelt sind.
Hier ist meine ErrorCode
enum Klasse:
Und hier ist meine StatusCode
enum Klasse:
Wie Sie in meiner DataResponse
-Klasse sehen können, habe ich viele Felder, daher habe ich einen sehr langen Konstruktor und jedes Mal, wenn ich ein DataResponse
-Objekt mache, habe ich eine große Zeile mit new DataResponse(.......)
. In Zukunft könnte ich mehr Felder haben, aber im Moment habe ich nur diese Felder.
Gibt es eine bessere Möglichkeit, ein DataResponse
-Objekt zu erstellen und dann List<DataResponse>
aus meiner Bibliothek zurückzugeben?
Verwenden Sie nicht sofort das Builder-Muster . Es ist nicht für Typen mit Tonnen von erforderlichen Feldern. Es ist für Typen mit Tonnen von optionalen Feldern.
Die erforderlichen Eigenschaften von Builders werden über den Konstruktor angegeben. Sie müssen keine Werte mithilfe von Methoden definieren, wodurch diese Werte optional sind.
Dies lässt Potenzial für Ihr Objekt nur teilweise konstruiert werden . Die Verwendung eines Builders wäre ein Missbrauch des Designs.
Wenn Sie das sagen, sollten Sie Ihren Typ zerlegen . Ich bin nicht sicher, was lmd
oder ctime
ist oder was wirklich ein DataResponse
darstellen soll, also kann ich Ihnen nicht sagen, auf welche Weise Sie zerlegen sollten. Aber ich kann Ihnen sagen, Zusammenhalt ist das, was bestimmt.
isLink
, maskInfo
und idType
könnten möglicherweise in ein DataResponseDetails
Objekt zerlegt werden:
Nun könnte Ihr DataResponse
sich aus DataResponseDetails
zusammensetzen:
Fühlen Sie, dass Ihr Konstruktor noch zu viel braucht? Zerlege mehr!
Tags und Links java constructor enums