Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Factory-Designmuster

PHP-Factory-Designmuster

一个新手
一个新手Original
2017-09-12 11:23:041137Durchsuche

1. Factory-Muster
ist eine Klasse, die über bestimmte Methoden verfügt, die Objekte für Sie erstellen. Sie können eine Factory-Klasse verwenden, um Objekte zu erstellen, ohne new direkt zu verwenden. Wenn Sie auf diese Weise den Typ des erstellten Objekts ändern möchten, müssen Sie nur die Fabrik ändern. Der gesamte Code, der diese Fabrik verwendet, wird automatisch geändert.

Der folgende Code ist ein Beispiel für eine Factory-Klasse. Die Serverseite der Gleichung besteht aus zwei Teilen: einer Datenbank und einer Reihe von PHP-Seiten, die es Ihnen ermöglichen, Feedback hinzuzufügen, eine Liste mit Feedback anzufordern und Artikel zu einem bestimmten Feedback abzurufen.

Die IUser-Schnittstelle definiert, welche Operationen das Benutzerobjekt ausführen soll:

interface IUser
{  function getName();
}

Die Implementierung von IUser heißt User:

class User implements IUser
{  public function __construct( $id ) { } 
  public function getName()
  {    return "Jack";
  }
}

Die UserFactory-Factory-Klasse erstellt die IUser-Objekt:

class UserFactory
{  public static function Create( $id )
  {    return new User( $id );
  }
}

Der Testcode fordert das User-Objekt von der Fabrik an und gibt das Ergebnis der getName-Methode aus:

$pr = UserFactory::Create( 1 );echo( $pr->getName()."\n" );

Es gibt eine Variante von das Factory-Muster, das Factory-Methoden verwendet. Diese öffentlichen statischen Methoden in einer Klasse erstellen Objekte dieses Typs. Diese Methode ist nützlich, wenn es wichtig ist, Objekte dieses Typs zu erstellen. Angenommen, Sie müssen zunächst ein Objekt erstellen und dann eine Reihe von Eigenschaften festlegen. Diese Version des Factory-Musters kapselt den Prozess an einem einzigen Ort, sodass Sie keinen komplexen Initialisierungscode kopieren und in die gesamte Codebasis einfügen müssen.

interface IUser //接口{  function getName();
} 
class User implements IUser
{  public static function Load( $id ) //静态函数  {        return new User( $id );
  }  public static function Create( ) //静态函数  {        return new User( null );
  }  public function __construct( $id ) { }//构造函数
  public function getName()
  {    return "Jack";
  }
} 
$uo = User::Load( 1 );echo( $uo->getName()."\n" );

Das obige ist der detaillierte Inhalt vonPHP-Factory-Designmuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn