Domino 9 und frühere Versionen > Entwicklung

Wie kann ich eine Klasse sinnvoll aufbauen ?

<< < (37/41) > >>

TMC:
Danke, aber was ich hier nicht kapiere:

Public Function getInstance(item As NotesItem) As HistoryField

Ich sehe da eine Factory, die sozusagen übergeordnet mir ein Haufen Objekte erstellt.

Den Aufruf hätt ich mir jetzt so gedacht:

Class FieldFactory
   Private m_HistoryFieldRT as RTHistoryFieldRT
   Private m_HistoryFieldText as RTHistoryFieldText
   Private m_HistoryFieldDatum as RTHistoryFieldDatum

  Sub new(item As NotesItem)
      Select Case item.Type
        Case 1:
            Set m_HistoryFieldRT = New RTHistoryFieldRT(item)
        Case Else:
            Set m_HistoryFieldText = New m_HistoryFieldText(item)
      End Select
  End Sub

End Class

Warum macht man / machst Du das über eine Function? Warum steht da "As HistoryField" ?

animate:
schwierig zu erklären (weil das im Moment für mich offensichtlich ist und ich mir diese Frage noch nie gestellt habe)

naja, was für ein Objekt brauchst du denn?
eine Instanz der Klasse HistoryField bzw. einer Subklasse davon.
von dem möchtest du ja dann mal die Unterschiede erfragen.
deshalb lassen wir uns von der Factory eins geben und arbeiten damit weiter.

es gibt nur ein einziges Factory-Objekt.
aber viele HistoryField-Objekte.
die Factory hat wirklich nur die Aufgabe, Objekte zu erzeugen und dem Aufrufer zurückzugeben.
Eine Factory nimmst du, damit das Wissen, unter welchen Umständen welches HistoryField-Objekt erzeugt werden muss, an einer Stelle ist.
Du hast ja schon erkannt, dass es evtl. nicht so geschickt ist, dieses Wissen auch noch in die History-Klasse zu packen bzw. dass es logisch gesehen nicht dort hingehört.

TMC:
Sorry, checke es noch überhaupt nicht.


--- Zitat ---es gibt nur ein einziges Factory-Objekt.
aber viele HistoryField-Objekte.
--- Ende Zitat ---

Vielleicht macht es das einfacher:
Mit welchem Code würdest Du den das Factory-Objekt erzeugen?

Rufst Du dann n mal die Public Function getInstance auf?

animate:
Ja genau.

Anstelle des
Set oHistoryFeld = New RTHistoryFeld(item)

das du jetzt machst,

machst du

Set oHistoryFeld = oFactory.getInstance(item)

vorher musst du einmal die Factory erstellen.

TMC:
Verstehe es noch nicht:

Wir haben hier das History-Objekt (gibt’s nur einmal).
Das History-Objekt erzeugen wir beim Öffnen des Dokumentes (PostOpen).

Im Konstruktor (sub new()) des HistoryObjektes
 - machen wir ein Set HistoryFactory = New HistoryFactory()
 - Pro Feld machen wir ein “HistoryFactory.getInstance(item(i))”

Dann hab ich jetzt meine Objekte erzeugt.

War es das was Du meintest?
Ich habe doch damit gar nicht meine HistoryField - Objekte in einem Array?

Ich sehe wohl den Wald vor lauter Bäumen nicht....

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln