Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Fabrikmethode (virtueller Konstruktor)

  1. #1
    Registrierter Benutzer Avatar von lousypoetry
    Registriert seit
    10.04.2005
    Beiträge
    56

    Fabrikmethode (virtueller Konstruktor)

    Hallo zusammen!

    Ich beschäftige mich grad mit Entwurfsmustern, genauer gesagt mit der Fabrikmethode (virtueller Konstruktor).

    Hat vielleicht jemand von euch ein gutes Beispiel oder eine Erklärung, das bzw. die zu meiner Erleuchtung beitragen könnte? Ich glaube ich hab ungefähr verstanden, wie man virtuelle Konstruktoren benutzt, scheiter aber an dem wann bzw wozu.

    Danke!

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Das macht man, wenn man auf Grund eines Parameters oder eine Systemeinstellung oder ähnlichem eine andere Klasse (von der selben Subklasse abgeleitet oder das selbe Interface implementierend) instanziieren möchte.

    Gute Beispiele in der Java Class Lib sind java.util.Calendar, wo anhängig von den Systemeinstellungen des Benutzers zB ein gregorianischer Kalendar oder vielleicht ein Hebräischer/Moslemischer/Buddistischer Kalendar erzeugt wird.

    Bzw die Formatierer in java.text, die zB anhängig von der Systemeinstellung Formatierer für Komma als Dezimaltrennzeichen oder Punkt als Dezimaltrennzeichen erstellen.

    Edit: oder das Paradebeispiel für Konstruktion abhängig vom Parameter
    Class.forName()

    Erzeugt eine Klasse, die man als Parameter angibt.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer Avatar von lousypoetry
    Registriert seit
    10.04.2005
    Beiträge
    56

    Question

    Zitat Zitat von anda_skoa
    Das macht man, wenn man auf Grund eines Parameters oder eine Systemeinstellung oder ähnlichem eine andere Klasse (von der selben Subklasse abgeleitet
    Ich hab dann doch eine Methode in einer Klasse, die aufgrund des Parameters entscheidet, von welcher Klasse sie ein Objekt zurückgibt, richtig? Also ungefähr so:

    PHP-Code:
    public Component create(int index) {
            
            switch(
    index) {
            case 
    0: return new Door();
            
            case 
    1: return new Wall();
            
            case 
    2: return new DoorWithSpell();
            
            default: return 
    null;
            }
        } 
    Wie mach ich das denn, wenn zB der Konstruktor von "Wall" Parameter erwartet? zB eine bestimmte Länge? Würde ich den Parameter dann erst der create()-Methode übergeben, auch wenn er ja vielleicht gar nicht gebraucht wird? Oder müsste ich die Methode überladen? Oder gibt es ne ganz andere Lösung?

    Danke! :-)

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Eine Fabrikmethode erzeugt alle Objekte ansich gleich, d.h. sie haben auch üblicherweise die selben Parameter.

    D.h. du könntest zwei Methoden machen, eine für Objekte ohne Länge, eine für Objekte mit Länge

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •