Announcement

Collapse
No announcement yet.

Factory Klassen in Java

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Factory Klassen in Java

    hallo, ich bin neu in java...

    ich möchte eine factory klasse F erstellen, die Instanzen der klasse A und B erstellen kann... dies soll ausschliesslich durch F geschehen können...

    eine möglichkeit, die ich sehr unelegant finde ist die, die konstrukoren von A und B nur innerhalb eines paketes sichtbar zu machen(in dem sich auch F befindet) ... in diesem paket sollte jedoch mehr klassen als nur die 3 sein, aus diesem grund kommt das nicht in frage!!!

    eine andere möglichkeit ist die, A und B werden selbst zur factory... kommt auch nicht in frage, da sämtliche A und B über F verwaltet werden müssen!!!

    wie gesagt, ich bin neu in java... ich programmiere seit vielen jahren c++ und da habe ich das attribut friend... jetzt meine frage: gibt es in java ähnliche möglichkeiten, oder wird das über ein anderes pattern gelöst?

  • #2
    Hallo Tobias!

    Es gibt nicht DIE eine Lösung.

    Es hängt zum Beispiel davon ab, wie komplex und groß Deine Klassen A und B sind. Sind sie sehr klein und übersichtlich, könntest Du sie als private, innere Klasse der Factory-Klasse realisieren. Dann kennt sie niemand anders außer der Factory-Klasse. Nach außen gibst Du nur jeweils ein Interface bekannt, in dem alle relevante Methoden enthalten sind, also InterfaceA und InterfaceB. Die sind dann öffentlich, die Implementierungen nicht öffentlich. Die Verwaltung der Instanzen von A und B liegen dann eindeutig ausschließlich in der Hand der Factory.

    Sind die Klassen recht groß, würde ich sie nicht als private, innere Klassen realiseren, da dies den Code zu unübersichtlich macht (was natürlich Geschmacksache ist). Dann finde ich einen Konstruktor ohne Modifier (besser als protected, weil bei protected auch erbende Klassen anderer Packages den Zugriff haben) eigentlich in Ordnung. Noch einen eindeutigen, verständlichen Klassenkommentar verpassen. Die hunderprozent sichere Lösung ist das selbstverständlich nicht. Die würdest Du nur mit der oberen hinbekommen.

    In der Hoffnung, geholfen zu haben,
    Stefan

    Comment


    • #3
      vielen dank für die schnelle antwort...

      ja die inneren klassen finde ich ebenfalls viel zu unübersichtlich, da es nicht nur 2 klassen(a und b) sind, sondern ca. 15 ;-(

      und das mit dem extra paket für die ganzen klassen wollte ich ebenfalls nicht unbedingt machen, da noch andere klassen in das paket sollen, die nicht das geringste mit der factory zu tun haben... deiner antwort entnehme ich, dass es keine weitere alternative gibt?---keine möglichkeit die krassen zu "befreunden"? schade

      gruß tobias

      edit: ich mache die factory als singleton und final, und die jeweiligen klassen müssen bei ihrer erstellung eine factory bekommen, dadurch stelle ich fest, dass alle bei der factory "angemeldet" sind und ebenfalls, dass mir im nachhinein nicht jmd meine factory überschreibt, sondern meine benutzen muss... und das nur, um im quelltext zum ausdruck zu bringen, dass man ja die factory benutzen soll!!! weiss net, ob ichs net einfach dirty zusammencode... java is strange...
      Zuletzt editiert von tobias.heckmann; 30.07.2007, 15:34.

      Comment

      Working...
      X