Weitere Artikel aus dem Webentwickler Blog
Datenbankprogrammierung - PHP - Grundlagen

 

 

Das Factory-Entwurfsmuster in PHP

Die  Factory-Methode gehört zur Gruppe der Erzeugungsmuster. Das Entwurfsmus­ter definiert eine Schnittstelle zur Erzeugung von Objekten. Es verlagert dabei die eigentliche Instanzierung in Unterklassen und lässt die Unterklassen entscheiden, welche konkreten Implementierungen verwendet werden.

 

Konventionen der Factory-Methode:

Um ein Factory-Methoden-Entwurfsmuster in PHP zu implementieren, führen Sie folgende Schritte durch:

1. Implementieren Sie eine abstrakte Klasse, in der Sie eine oder mehrere abstrakte Methoden deklarieren, die die Schnittstelle zum Erzeugen von Objekten vorgeben.

2. Fügen Sie dieser Klasse weitere Methoden hinzu, deren Logik bei allen konkreten Implementierungen identisch ist. Sie können in diesen Methoden bereits auf die abstrakte Fabrikmethode zugreifen.

3. Bilden Sie beliebig viele Unterklassen, in denen Sie verschiedene Implementierungen der abstrakten Methode einfügen.

4. Verwenden Sie nun diese konkreten Unterklassen, um die tatsächlichen Objekte zu instanzieren und Ihren Applikationscode von den konkreten Implementierungen zu lösen.

 

Das Factory-Entwurfsmuster in PHPWenn Sie diese Schritte befolgen, steht dem Einsatz von Factory-Methoden-Entwurfs­mustern nichts im Wege. Mithilfe des folgenden Anwendungsbeispiels können Sie einen »virtuellen« Verlag erzeugen. Dieser ist in der Lage, beliebig viele Bücher zu produzieren.

 

 

Beispiel - Buch-Klasse (buch.php)

<?php

require_once 'Produkte.php';

class Buch implements Produkte {

protected $verlag;
protected $titel;
protected $preis;
protected $verkauft = false;
protected $verpackt = false;

public function __construct($verlag, $titel, $preis = 0)
{
$this->verlag = $verlag;
$this->titel = $titel;
$this->preis = $preis;
}

public function berechneMwst($steuersatz)
{
if ($this->preis < 0)
{
return false;
}
$this->preis = $this->preis + round(($this->preis * $steuersatz),2);
return true;
}

public function verpacken()
{
$this->verpackt = true;
return $this->verpackt;
}

public function getVerlag()
{
return $this->verlag;
}

public function getTitel()
{
return $this->titel;
}

public function getPreis()
{
return $this->preis;
}

public function getVerpackt()
{
return $this->verpackt;
}
}

?>

 

Beispiel - Produkte-Interface (Produkte.php)

<?php

interface Produkte
{
public function berechneMwst($steuersatz);
public function verpacken();
public function getVerlag();
public function getTitel();
public function getPreis();
public function getVerpackt();
}

?>

 

Beispiel - AbstractHersteller.php

<?php

abstract class AbstractHersteller
{

protected $name;

public function __construct($name)
{
$this->name = $name;
}

public function verkaufeBuch($titel, $preis, $steuersatz)
{
$produkt = $this->produziereBuch($titel, $preis);
$produkt->verpacken();
$produkt->berechneMwst($steuersatz);
return $produkt;
}

abstract protected function produziereBuch($titel, $preis);
}

?>

 

Beispiel - BuchHersteller.php

Ganzen Artikel lesen... 

Kundenkommentare
Social Bookmarks
elo-web bookmarken bei: Mr. Wong elo-web bookmarken bei: Webnews elo-web bookmarken bei: Icio elo-web bookmarken bei: Oneview elo-web bookmarken bei: Yigg elo-web bookmarken bei: Linkarena elo-web bookmarken bei: Digg elo-web bookmarken bei: Reddit elo-web bookmarken bei: Simpy elo-web bookmarken bei: StumbleUpon elo-web bookmarken bei: Netscape elo-web bookmarken bei: Furl elo-web bookmarken bei: Yahoo elo-web bookmarken bei: Blogmarks elo-web bookmarken bei: Diigo elo-web bookmarken bei: Technorati elo-web bookmarken bei: Newsvine elo-web bookmarken bei: Blinkbits elo-web bookmarken bei: Ma.Gnolia elo-web bookmarken bei: Smarking elo-web bookmarken bei: Netvouz elo-web bookmarken bei: Folkd elo-web bookmarken bei: Spurl elo-web bookmarken bei: Google elo-web bookmarken bei: Blinklist
URL zu dieser Seite
Einfach den Quelltext kopieren und auf Ihrer Webseite einbinden

Kontakt
Newsletter | Kontakt | RSS Feed
Warenkorb: 0 Artikel
Gesamtwert: EUR 0,00
Home PHP/MySQL & JavaScript  Das Factory-Entwurfsmuster in PHP