Aloha, beim Versuch das Programm an dem ich mich zzt. versuche stehe ich an einer Stelle, an der ich mir gedanken darum mache wie Wart - und erweiterbar meine Anwendung später ist, ich lese mich dazu grade in das Buch Entwurfsmuster von Kopf bis Fuß ein. Nun habe ich eine kleine Verständnissfrage wie ich sowas auf meinen Code umsetzten könnte.
Angenommen ich habe eine Klasse Client, diese beinhaltet veränderliche Werte Getter/Setter die ich , der Wart und erweiterbarkeits halber gerne Kapseln würde, wäre dieser ansatz korrekt ?:
1. Veränderliche Werte aus der Klasse Client heraus, in einem Interface zusammenführen
Superklasse | Definiert dann nuroch Instanzvariablen / implementiert das Interface
das neu erstellte Interface mit gettern/setter usw.
2. Ich möchte jetzt zwischen Clients unterscheiden können, sprich BusinessClient und PrivateClient
also wollte ich dafür je eine Klasse erstellen die dann Client erweitern.
Subklasse | extends Client
Subklasse | extends Client
3. Nun möchte ich das die beiden Unterklassen ebenfalls auf die getter/setter Methoden zugriff haben
Wäre der folgende ansatz korrekt ?:
Klasse mit main Methode:
Da ja die Subklassen die in Client festgelegten Instanzvariablen erben , könnte ich wenn ich ein neues Objekt einer Subklasse erstelle ebenfalls auf getter/setter zugreifen die von Client implementiert werden ?
4. Wenn ich nun die Daten von BusinessClient und PrivateClient z.B per FileWriter in eine Datei schreiben möchte (Methode dazu wird in "ControllerClient" definiert), allerdings unterscheiden wollen würde, wohin die Daten geschrieben werden , müsste ich ja "Controller" für die 2 Unterklassen erstellen, die die Methoden des Interfaces so überschreiben wie ich es benötigen würde, wie würde dieser Ansatz aussehen?
über 2 "Controllerklassen" die das Interface Implementieren und dessen Methoden überschreiben, und ich übergebe dann im Konstruktor der Unterklassen jeweils den Controller ?:rtfm:
Das wäre zzt. glaube ich mein Hauptproblem, wie sehe die Implementierung in der Klasse mit
Methode aus, bzw. wie sehe die Implementierung in Client dann aus ? Vielleicht jemand nen Beispiel für mich ?
Angenommen ich habe eine Klasse Client, diese beinhaltet veränderliche Werte Getter/Setter die ich , der Wart und erweiterbarkeits halber gerne Kapseln würde, wäre dieser ansatz korrekt ?:
1. Veränderliche Werte aus der Klasse Client heraus, in einem Interface zusammenführen
Code:
Client.java
Code:
ClientController.java
2. Ich möchte jetzt zwischen Clients unterscheiden können, sprich BusinessClient und PrivateClient
also wollte ich dafür je eine Klasse erstellen die dann Client erweitern.
Code:
BusinessClient.java
Code:
PrivateClient.java
3. Nun möchte ich das die beiden Unterklassen ebenfalls auf die getter/setter Methoden zugriff haben
Wäre der folgende ansatz korrekt ?:
Java:
public class Client implements ClientController{
private String name,street,number,countryCode,location,phoneNumber,faxNumber;
//more code / + implementierte getter/setter und definiert diese !
}
Java:
public class Foo{
Client bClient,pClient;
JTextField edtOne;
public Foo(){
edtOne = new JTextField();
bClient = new BusinessClient();
pClient = new PrivateClient();
/*Zugriff auf die von Client implementierten , in ClientController
/*( oder dann BusinessController ) festgelegten getter/setter */
bClient.setName(edtOne.getText()); // Beispiel !! | Später dann in der actionPerformed methode
}
}
4. Wenn ich nun die Daten von BusinessClient und PrivateClient z.B per FileWriter in eine Datei schreiben möchte (Methode dazu wird in "ControllerClient" definiert), allerdings unterscheiden wollen würde, wohin die Daten geschrieben werden , müsste ich ja "Controller" für die 2 Unterklassen erstellen, die die Methoden des Interfaces so überschreiben wie ich es benötigen würde, wie würde dieser Ansatz aussehen?
über 2 "Controllerklassen" die das Interface Implementieren und dessen Methoden überschreiben, und ich übergebe dann im Konstruktor der Unterklassen jeweils den Controller ?:rtfm:
Das wäre zzt. glaube ich mein Hauptproblem, wie sehe die Implementierung in der Klasse mit
Code:
main()