Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung des PHP-Factory-Methodenentwurfsmusters

Detaillierte Erläuterung des PHP-Factory-Methodenentwurfsmusters

php中世界最好的语言
Freigeben: 2023-03-25 22:34:01
Original
1240 Leute haben es durchsucht

Dieses Mal erkläre ich Ihnen ausführlich den Fall des PHP-Factory-MethodeEntwurfsmusters und was die Hinweise bei der Verwendung des PHP-Factory-Methode-Entwurfsmusters sind Ein praktischer Fall.

1. Was ist das Factory-Methodenmuster

Als kreatives Designmuster dient das Factory-Methodenmuster dazu, „etwas“ zu erschaffen. Bei einer Factory-Methode ist das zu erstellende „Ding“ ein Produkt, und es besteht keine Bindung zwischen dem Produkt und der Klasse, die es erstellt hat. Um diese lose Kopplung aufrechtzuerhalten, stellt der Kunde in der Praxis die Anfrage über eine Fabrik, die dann das gewünschte Produkt erstellt. Beim Factory-Methodenmuster stellt der Anforderer nur eine Anfrage, ohne das Produkt tatsächlich zu erstellen.

2. Wann das Factory-Methodenmuster verwendet werden soll

Wenn sich die Unterklasse des instanziierten Objekts ändern kann, muss das Factory-Methodenmuster verwendet werden.

3. Allgemeines Fabrikmethodenmuster

Bei Verwendung des allgemeinen Fabrikmethodenmusters enthält der Client nur einen Verweis auf die Fabrik und eine Fabrik produziert ein Produkt. Wenn Sie ein Produkt hinzufügen, müssen Sie eine neue Fabrikklasse und eine neue Produktklasse hinzufügen.

<?php
/**
*  一般工厂方法设计模式
**/
//工厂抽象类
abstract class Factory
{
  protected abstract function produce();
  public function startFactory()
  {
    $pro = $this->produce();
    return $pro;
  }
}
//文本工厂
class TextFactory extends Factory
{
  protected function produce()
  {
    $textProduct = new TextProduct();
    return $textProduct->getProperties();
  }
}
//图像工厂
class ImageFactory extends Factory
{
  protected function produce()
  {
    $imageProduct = new ImageProduct();
    return $imageProduct->getProperties();
  }
}
//产品类接口
interface Product
{
  public function getProperties();
}
//文本产品
class TextProduct implements Product
{
  private $text;
  function getProperties()
  {
    $this->text = "此处为文本";
    return $this->text;
  }
}
//图像产品
class ImageProduct implements Product
{
  private $image;
  function getProperties()
  {
    $this->image = "此处为图像";
    return $this->image;
  }
}
//客户类
class Client
{
  private $textFactory;
  private $imageFactory;
  public function construct()
  {
    $this->textFactory = new TextFactory();
    echo $this->textFactory->startFactory() . &#39;<br />&#39;;
    $this->imageFactory = new ImageFactory();
    echo $this->imageFactory->startFactory() . &#39;<br />&#39;;
  }
}
$client = new Client();
/*运行结果:
此处为文本
此处为图像
*/
?>
Nach dem Login kopieren

4. Parametrisiertes Factory-Methodenmuster

Bei Verwendung des parametrisierten Factory-Methodenmusters enthält der Kunde Verweise auf die Fabrik und das Produkt und muss den Typ angeben Wenn Sie eine Anfrage stellen, stellen Sie sicher, dass eine Fabrik mehrere Produkte herstellt. Beim Hinzufügen eines Produkts müssen Sie lediglich eine neue Produktkategorie hinzufügen.

<?php
/**
*  参数化工厂方法设计模式
**/
//工厂抽象类
abstract class Factory
{
  protected abstract function produce(Product $product);
  public function startFactory(Product $product)
  {
    $pro = $this->produce($product);
    return $pro;
  }
}
//工厂实现
class ConcreteFactory extends Factory
{
  protected function produce(Product $product)
  {
    return $product->getProperties();
  }
}
//产品类接口
interface Product
{
  public function getProperties();
}
//文本产品
class TextProduct implements Product
{
  private $text;
  public function getProperties()
  {
    $this->text = "此处为文本";
    return $this->text;
  }
}
//图像产品
class ImageProduct implements Product
{
  private $image;
  public function getProperties()
  {
    $this->image = "此处为图像";
    return $this->image;
  }
}
//客户类
class Client
{
  private $factory;
  private $textProduct;
  private $imageProduct;
  public function construct()
  {
    $factory = new ConcreteFactory();
    $textProduct = new TextProduct();
    $imageProduct = new ImageProduct();
    echo $factory->startFactory($textProduct) . &#39;<br />&#39;;
    echo $factory->startFactory($imageProduct) . &#39;<br />&#39;;
  }
}
$client = new Client();
/*运行结果:
此处为文本
此处为图像
*/
?>
Nach dem Login kopieren

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

PHP ermöglicht die Funktion zum Teilen von Bildern

Detaillierte Erläuterung der Anwendungsfälle im PHP-Singleton-Modus

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des PHP-Factory-Methodenentwurfsmusters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage