php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.12.2011, 14:00  
archer42
Gast
 
Beiträge: n/a
Standard Praktischer Einsatz des Factory-Method-Pattern

Hallo,
ich lese momentan das Buch "PHP Design Patterns" momentan bin ich bei den Erzeugungsmustern.

Nun wird für das Factory-Method-Pattern ein Auto Hersteller als Beispiel gewählt:
PHP-Code:
<?php namespace dedomainmanufacturers;

abstract class 
AbstractManufacturer {
    protected 
$name;
    
    public function 
__construct($name) {
        
$this->name $name;
    }
    
    public function 
sellVehicle($color) {
        
$vehicle $this->manufactureVehicle($color);
        
$vehicle->startEngine();
        
$vehicle->moveForward(1);
        
$vehicle->stopEngine();
        return 
$vehicle;
    }
    
    abstract protected function 
manufactureVehicle($color) {}
   
}

?>
PHP-Code:
<?php namespace dedomainmanufacturers;
use 
dedomainvehicleCar;

class 
CarManufacturer extends AbstractManufacturer {
    
    protected function 
manufactureVehicle($color) {
        
$vehicle = new Car($this->name$color);
        return 
$vehicle;
    }

}
    
?>
Nun für die Autos erfüllt das Entwurfsmuster die Funktion, Objekte zu instanzieren und dabei verschiedene Instanzierungsmöglichkeiten zu benutzen, durch die Verwendung von Abstrakten Methoden.

Meine Frage ist nun in welchem Zusammenhang man dieses Muster in der praktischen Programmierung brauch, wo es um die Datenverarbeitung und nicht um "Gegenstände" wie Autos geht.

Wozu brauch man da das Factory-Method-Pattern?

Gruß
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.12.2011, 16:12  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Macht es einen relevanten Unterschied für Dich, ob Du nun Auto-Objekte oder Ressourcen-Adapter zurück gibst, z.B. für den Zugriff auf einen Webservice, ein DBMS oder was auch immer?

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 26.12.2011, 16:49  
archer42
Gast
 
Beiträge: n/a
Standard

Insofern, dass ich mir das Pattern nur mit Gegenständen vorstellen kann schon.
Gibt es den irgendwo ein Beispiel, welches die Patterns in "richtigen" Code darstellt?
  Mit Zitat antworten
Alt 27.12.2011, 15:01  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von archer42 Beitrag anzeigen
...
PHP-Code:
//...
    
public function sellVehicle($color) {
        
$vehicle $this->manufactureVehicle($color);
        
$vehicle->startEngine();
        
$vehicle->moveForward(1);
        
$vehicle->stopEngine();
        return 
$vehicle;
    }
// ...

Wie soll man so etwas Unsinniges auf nicht-Auto-bezogene Beispiele übertragen? Ich kenne keinen Auto-Verkäufer, der zum Verkauf des Autos, das Auto erst herstellt, dann den Motor startet, das Auto um eine nicht genannte Einheit bewegt und abschließend den Motor abstellt ...

Die "abstrakte" Factory deines Beispieles ist auch nicht abstrakt, sie stellt Fahrzeuge ("vehicles") her. In Software ist das sehr wohl etwas Konkretes.

Davon abgesehen, verkauft eine Auto-Factory keine Autos, sie stellt sie her. Das sollte eine "Software-Factory" auch machen: Objekte, meist eines bestimmten Typs, herstellen und eventuell vorkonfigurieren. Mehr nicht.

Zitat:
... Meine Frage ist nun in welchem Zusammenhang man dieses Muster in der praktischen Programmierung brauch, wo es um die Datenverarbeitung und nicht um "Gegenstände" wie Autos geht.
Datenbank-APIs haben üblicherweise Methoden, die Verbindungs-Objekte liefern, die die Kommunikation mit der Datenbank steuern. Diese Verbindungs-Objekte wiederum haben Methoden, die so genannte Statement-Objekte erzeugen.

Wenn du X(HT)ML-Dokumente aus DOM-Bäumen erzeugst, benötigst du irgendwann sicher eine der Methoden, deren Namen mit ->create...() beginnen.

Der Wikipedia-Artikel zu Factory-Methoden hat auch ein nettes "praktisches" Beispiel für eine Anwendung, die Vorschaugrafiken aus verschiedenen Bild-Formaten erzeugt.

Geändert von fireweasel (27.12.2011 um 15:19 Uhr).
fireweasel ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Frage zum Factory Design Pattern axelf Software-Design 20 11.06.2011 00:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php factory praktischer einsatz, praktischer einsatz von factory pattern, abstract factory praktisches beispiel, factory pattern einsatzmöglichkeiten

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:40 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum