Moin
Für eine Telefonbuch entwerfe ich eine Klasse Contact, bei dem Attribut phoneNumber stelle ich mir jetzt die Frage ob es guter Stil wäre, diese doch in einer eigene Klasse abzubilden statt einfach nur ein String. Ich finde aber keine Argumente die für das eine oder andere Vorgehen sprechen.
Pro eigene Klasse: Mit der Klasse PhoneNumber könnte ich dort festlegen was eine Telefonummer ist. Contra String: Mit einem String wäre es erstmal eine Zeichenkette und ich müsste eigentlich dort wo ich sie verwende immer schauen, dass es eine Telefonnummer ist.
Naja du könntest es ein eine eigene Klasse auslagern und für die Vorwahl der Telefonnummer ein Enum benutzen
Das wäre zu dem auch Hilfreich, da meines Wissens jede Telefonnummer in einer Datenbank des Staats an eine Person geknüpft ist. Dies war früher bei z.B. Prepaid Karten nicht so
Telefonnummern können sehr komplex werden. Ggf. willst du dir dafür eine Lib anschauen, https://github.com/google/libphonenumber kommt auch mit einer `PhoneNumber` Klasse
Achso
ich möchte es erstmal nicht mit einer DB machen.
Aber das Enum muss doch sowieso geschrieben werden? Also ich kann doch nicht zur Laufzeit ein Enum von einer DB erstellen?
Telefonnummern können sehr komplex werden. Ggf. willst du dir dafür eine Lib anschauen, https://github.com/google/libphonenumber kommt auch mit einer `PhoneNumber` Klasse
Telefonnummer sollte vor allem nicht nur eine Klasse oder ein String sein sondern eine Liste davon. Schließlich kann ein Kontakt beliebig viele Telefonnummern besitzen
Also meine Ursprüngliche Frage war ja ob ich es als eigene Klasse umsetzen soll, nicht wie.
Habe ich das richtig verstanden dass ich es als eigene Klasse umsetzen sollte?
Meine Frage: Was ist im Kontext deiner Anwendung eine Telefonnummer? Nur ein String der irgendwo angezeigt werden soll? Oder passieren da fachliche Dinge damit (muss man z.B. feststellen, dass 0049 12345 die gleiche Nummer ist wie +4912345). Muss man die verschiedene Formate normalisieren (0049 => +49). Muss man Landes/Ortsvorwahl ggf. separat anzeigen können? Muss man prüfen können ob ein eingegebener Text eine gültige Telefonummer ist?
Je mehr dieser oder ähnlicher Fragen du mit "JA" beantwortest um so mehr spricht für eine eigene Klasse.
Um vielleicht mal zwei Varianten darzustellen aus dem beruflichen Umfeld.
* Ein System was Personen-Stammdaten verwendet um diese zu verwalten mit ihren Kontakt-Information: Hier würde ich für eine Klasse PhoneNumber plädieren
* Ein System was das System für die Personen-Stammdaten anbindet und die Daten die daraus kommen nur zur Anzeige in irgendwelchen Masken nutzt => Hier würde ich die PhoneNumber als String ablegen
Also es soll einfach ein ganz billiges Telefonbuch werden, wo ich Einträge in einer csv Datei speichern und laden kann.
Die Anzeige erfolgt über eine JavaFX gui.
Normalisierung der Vorwahlen möchte ich umsetzen.
Aus DDD Sicht macht es sowieso Sinn eine eigene Value Class dafür zu machen. Meiner Meinung nach verlierst durch eine eigene Klasse nichts, hast aber ggf Vorteile bei der Weiterentwicklung