Hallo Leute,
Ich sitze zur Zeit an einem größeren Projekt - ein Grafikprogramm. In der Anwendung ist es sehr mit Paint.NET verwandt.
Ich werde zu dem Programm im Winter dieses Jahres eine BLL für meine 5.PK im Abitur einreichen (Thema: "Wie schreibe ich ein Grafikprogramm in einer dynamischen Sprache wie Java?").
Da ich auch das Programm selber zeigen werde, will ich auch das der Code schönst möglich wird. Bin im Moment bei 91 Klassen bzw. 18000 Zeilen. In diesem Thread würde ich gerne mehrere Fragen stellen. Im Moment hab ich erstmal 2:
1. Frage - Internationalization:
Für die I18N füge ich jedem Objekt, bei dem das nötig ist eine "refresh()"-Methode hinzu, in der ich alle Titel und Beschreibung aktualisiere, um eine neue Sprache zu übernehmen. Dafür rufe ich in meiner Main-Klasse, welches die wichtigsten Panels und andere Objekte enthält, die "refresh()"-Methode auf. Diese ruft unter anderem dann von den Unter-panels die "refresh()"-Methoden auf. Dafür muss ich halt alle Objekte darüber in gewisser Weise verketten. Jetzt dachte ich, es wäre schöner, ein Interface "Refreshable" zu erzeugen und dann jedem benötigten Objekt hinzufügen. Diese Objekte füge ich dann alle einem "Refreshable"-Array hinzu, wo dann alle "refresh()"-Methoden aufgerufen werden. Das wäre meine erste Idee. Aber jetzt ist mir auch eingefallen, man könnte ja von dem Main-Objekt alle Eigenschaften bzw Unter-Panels dynamisch laden und prüfen, ob es sich dabei um Refreshable-Objekte handelt, um bei denen das selbe dann durchzuführen. Welche Idee findet ihr besser und zur zweiten: Wie lade ich denn Eigenschaften eines Objekts dynamisch zur Laufzeit?
2. Frage - Singletons:
Da ich bei vielen Methoden mal schnell auf ein anderes Objekt zu greifen muss, hab ich bisher einfach jedem Objekt eine Referenz auf das Main-Objekt gegeben, von wo aus man alle Objekte erreichen kann. Bloß ist es sicher nicht schön, in jeder Klasse so eine extra Referenz liegen zu haben. Also muss ich zu Singletons greifen. Jetzt ist die Frage, wie ich das ausreizen kann. Soll jede Klasse für ein "einzigartiges" Objekt ein Singleton haben oder soll es nur ein paar sein, von denen ich immer noch direkt auf Unterobjekte zugreifen kann, anstatt bei denen wiederum ein Singleton aufzubauen. Sprich entweder :
oder :
Es ist doch sicher nicht toll, überall immer Singleton zu benutzen, oder schon?
Gruß, Thomas
Ich sitze zur Zeit an einem größeren Projekt - ein Grafikprogramm. In der Anwendung ist es sehr mit Paint.NET verwandt.
Ich werde zu dem Programm im Winter dieses Jahres eine BLL für meine 5.PK im Abitur einreichen (Thema: "Wie schreibe ich ein Grafikprogramm in einer dynamischen Sprache wie Java?").
Da ich auch das Programm selber zeigen werde, will ich auch das der Code schönst möglich wird. Bin im Moment bei 91 Klassen bzw. 18000 Zeilen. In diesem Thread würde ich gerne mehrere Fragen stellen. Im Moment hab ich erstmal 2:
1. Frage - Internationalization:
Für die I18N füge ich jedem Objekt, bei dem das nötig ist eine "refresh()"-Methode hinzu, in der ich alle Titel und Beschreibung aktualisiere, um eine neue Sprache zu übernehmen. Dafür rufe ich in meiner Main-Klasse, welches die wichtigsten Panels und andere Objekte enthält, die "refresh()"-Methode auf. Diese ruft unter anderem dann von den Unter-panels die "refresh()"-Methoden auf. Dafür muss ich halt alle Objekte darüber in gewisser Weise verketten. Jetzt dachte ich, es wäre schöner, ein Interface "Refreshable" zu erzeugen und dann jedem benötigten Objekt hinzufügen. Diese Objekte füge ich dann alle einem "Refreshable"-Array hinzu, wo dann alle "refresh()"-Methoden aufgerufen werden. Das wäre meine erste Idee. Aber jetzt ist mir auch eingefallen, man könnte ja von dem Main-Objekt alle Eigenschaften bzw Unter-Panels dynamisch laden und prüfen, ob es sich dabei um Refreshable-Objekte handelt, um bei denen das selbe dann durchzuführen. Welche Idee findet ihr besser und zur zweiten: Wie lade ich denn Eigenschaften eines Objekts dynamisch zur Laufzeit?
2. Frage - Singletons:
Da ich bei vielen Methoden mal schnell auf ein anderes Objekt zu greifen muss, hab ich bisher einfach jedem Objekt eine Referenz auf das Main-Objekt gegeben, von wo aus man alle Objekte erreichen kann. Bloß ist es sicher nicht schön, in jeder Klasse so eine extra Referenz liegen zu haben. Also muss ich zu Singletons greifen. Jetzt ist die Frage, wie ich das ausreizen kann. Soll jede Klasse für ein "einzigartiges" Objekt ein Singleton haben oder soll es nur ein paar sein, von denen ich immer noch direkt auf Unterobjekte zugreifen kann, anstatt bei denen wiederum ein Singleton aufzubauen. Sprich entweder :
Code:
Main.getSingleton().center.setTool(Design.Rectangle);
Code:
Center.getSingleton().setTool(Design.Rectangle);
Es ist doch sicher nicht toll, überall immer Singleton zu benutzen, oder schon?
Gruß, Thomas