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.