Anfängerfrage: warum Factory?



  • Hallo,

    welche Vorteile habe ich, wenn ich das Erstellen einer Objekt-Instanz nur über eine Factory erlaube? *grübel*



  • Original erstellt von <keinPlan>:
    Hallo,
    welche Vorteile habe ich, wenn ich das Erstellen einer Objekt-Instanz nur über eine Factory erlaube? *grübel*

    sehe keinen.



  • Sowas nutzen nur die C++ Profis zum Angeben, hat keinen Nutzen. 🕶

    Nennt man auch Overengineering. 😉



  • Kenne den Begriff nur im Zusammenhang mit COM .... und da macht es durchaus Sinn. Weiss nicht, wie es bei anderen Techniken aussieht, aber ich denk mal grade bei CORBA wird es Aehnliche Mechanismen geben, ob sie aber genau so heissen ???

    Alsso eine Class-Factory macht Sinn, wenn es sich nicht nur um pures Instanzieren von Klassen geht.
    Am beispiel von COM:
    Um eine COM CLasse zu erstellen brauchst du deren Identifier(CLSID)
    Ueber Eintrage in der Regestry bekommst du Raus, welches Modul (dll, exe) fuer die Erstellung deines COM-Objects zustaendig ist ..... und weiter Infromationen.
    Dann rufst du eine Betriebssystem-FUnktion auf, die dir Dein Object erzeugt und im Object werden gewisse Initialisirungen vorgenommen.
    Als ergebniss erhaetlts du dann deinen Zeiger auf die Schnittstelle, die du angefordert hast, oder einen Zeiger auf eine Klasse, die den Schnittstellenzeiger kapselt (Smartpointer)

    Da die Lookups auf die Regestry zum erhalten der Informationen Zeit benoetigen, und das eigentliche Instanzieiren doch etwas "Arbeit" ist, macht es durchaus sinn, eine spezialisierte CLass-Factory dazu zu bemuehen, die einmal Instanziert, sich alle Informationen einmal zu holen um sie ned jedesmal bei jedem neuen Objekt neu holen zu muessen .... So eine CLassfactory ist meist nur fuer das instanziieren fuer ein bestimmten Class (COM) Typ zustaendig.

    Ne klass factory um ein "gemeines" MyClass * p_mypointer = new MyClass(); zu kapseln, macht natuerlich ned viel SInn ....

    Ciao ....



  • sehe keinen.

    Die Vorteile von Factories sind hinlänglich bekannt (Stichwörter: DIP, aufbrechen von Abhängigkeiten, höhere Flexibilität, Vorteile beim Testen (->Spoofing)). Bekanntermaßen haben diese Vorteile auch ihren Preis und ich verstehe deshalb durchaus, warum man mit Factories vorsichtig sein sollte.
    Deine Aussage verstehe ich aber mal wieder beim Besten Willen nicht.
    Hast du irgendeine Begründung? Irgendwelche Alternativvorschläge?



  • Original erstellt von HumeSikkins:
    Deine Aussage verstehe ich aber mal wieder beim Besten Willen nicht.
    Hast du irgendeine Begründung? Irgendwelche Alternativvorschläge?

    Sehe keinen allgemeinen Grund, das Erstellen einer Objekt-Instanz *NUR* über eine Factory zu erlauben.
    Oft gibts Factories, die zwar Objekte fein erstellen können, aber man kann sich auch solche Objekte per Hand machen. Allgemeine Gründe, überhaupt Factories einzusetzen, gibts natürlich genug. Das war aber nicht die Frage.



  • @volkard
    Oha. Sorry mein Fehler. Mein Pattern-Matching-Lese-Algorithmus hat das 'nur' mal wieder gekonnt unterschlagen 🙂



  • erstmal danke 😉
    Im dem Fall, den ich mir angeschaut hatte, war der Grund wohl der, daß der Zugriff auf die Instanzen nur per Smartpointer möglich sein sollte. Leuchtet mir ein, daß man Konstruktoren und Zuweisung dann private macht.
    Aber wo wir beim Thema sind: Was ist "DIP" und "Spoofing" bzw. wo kann ich etwas darüber nachlesen? *ich will ja nicht, daß ihr hier wegen meinen dummen Fragen Aufsätze schreibt*




Anmelden zum Antworten