Entwurfsmuster: Factory-Pattern

In der objektorientierten Programmierung ist die Objekterstellung – auch bekannt als Instanziierung – unumgänglich. Objekte müssen an verschiedenen Punkten im Code geschaffen werden, wobei dieses Erzeugen von Objekten in der Regel keine schwierige Aufgabe darstellt (die meisten Sprachen, PHP eingeschlossen, haben eine einfache und intuitive Syntax dafür).

Bei der Entwicklung komplexer Systeme kann die Objekterstellung schwierig werden. Es gibt Situationen, in denen verschiedene Objekte geschaffen werden müssen, so z. Bsp. basierend auf unterschiedliche Bedingungen oder auf der Grundlage des Kontextes. Erzeugen von Objekten über konkrete Typen explizit im Code kann zu einem Alptraum werden: Hier hilft eine Factory, diese ist ein Hilfsmittel zur Erzeugung von Objekten. Sie wird z.B. dann verwendet, wenn die zur Generierung des Objekts verwendete Klasse erst zur Laufzeit bekannt ist. Das Factory Method Pattern, auf deutsch “Fabrikmethode”, stellt eine Schnittstelle für die Erzeugung eines Objekts bereit, überlässt aber die Entscheidung darüber, welche konkrete Klasse instanziiert werden soll, seinen Unterklassen.

Eine Factory Methode könnte zum Beispiel folgendermaßen aussehen:

class MyClass{
static public function factory($className, $paras = null){
    if (! is_string($className) || ! strlen($className)) {
        throw new exception('Error: class must be a string');
    }
    require_once $className . '.php';
    return new $className($paras);
}
}

$para = array(
'para1' => x1,
'para2' => x2,
);

$object = MyClass::factory('className', $para);

Das Factory Method Pattern kann eingesetzt werden, wenn:

  • Die aufrufende Klasse nicht weiß, welche konkrete Klasse instanziiert werden soll.
  • Die aufrufende Klasse nicht weiß, wie eine konkrete Klasse instanziiert werden muss.
  • Die aufrufende Klasse Informationen zur Erzeugung einer Klasse mitgibt, anhand dieser das Factory Method Pattern entscheidet, welche konkrete Klasse instanziiert wird.
  • Eine Klasse, die Verantwortung für die konkret zu erzeugende Klasse an ihre Unterklassen delegieren möchte.
Dieser Beitrag wurde unter Enwurfsmuster abgelegt und mit den Tags versehen. Setze ein Lesezeichen auf den Permalink.

Eine Antwort auf Entwurfsmuster: Factory-Pattern

  1. Pingback: dagtales.de » PHP – Dependency Injection

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create