Auf Kommentar antworten

Template Method Pattern

Das Template Method Pattern hat nichts mit Templates im üblichen Sinne zu tun, soviel vorne weg. Es schreibt vielmehr den Ablauf eines Algorithmus vor, ohne dessen einzelne Komponenten zu implementieren. Die Bestandteile werden lediglich bedingt und in ihrer Reihenfolge festgelegt, können jedoch beliebig in den erbenden Klassen umgesetzt werden.

abstract class AbstractFoo {
 
  final public function execute() {
 
    $this->init();
    $this->dispatch();
    $this->run()
    ? $this->output()
    : $this->setError();
    }
  }
 
  abstract protected function init();
 
  abstract protected function dispatch();
 
  abstract protected function run();
 
  abstract protected function output();
 
  abstract protected function setError();
}

Die Klasse AbstractFoo ist als abstract deklariert, was dazu führt, dass sie nicht ohne vererbt zu werden instanziert werden kann. Die einzige öffentliche Methode execute() beinhaltet den logischen Ablauf der weiteren Methoden und ist als final deklariert um das Überschreiben dieser Methode zu unterbinden. Die einzelnen Bestandteile sind in dieser Klasse jedoch nicht konkret implementiert, sondern als abstrakte Methoden angelegt. Daraus resultiert, dass eine erbende Klasse die konkreten Implementierungen der Methoden übernehemen muss.

class ConcreteFoo extends AbstractFoo {
 
  public function init() {
    // konkrete Implementierung  für init()
  }
 
  public function dispatch() {
    // konkrete Implementierung  für dispatch()
  }
 
  public function run() {
    // konkrete Implementierung  für run()
  }
 
  public function output() {
    // konkrete Implementierung  für output()
  }
 
  public function setError() {
    // konkrete Implementierung  für setError()
  }
}

Eine erbende Klasse bekommt somit den eigentlichen (nicht überschreibbaren) Algorithmus "aufgedrückt" und ist dafür verantwortlich dessen Bestandteile konkret umzusetzen.

Antworten

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <abbr>
  • Zeilen und Absätze werden automatisch erzeugt.

Weitere Informationen über Formatierungsoptionen