ホームページ  >  記事  >  バックエンド開発  >  PHPファクトリーメソッドパターンの利点は何ですか

PHPファクトリーメソッドパターンの利点は何ですか

WBOY
WBOYオリジナル
2022-03-25 18:35:051413ブラウズ

PHP ファクトリ メソッド パターンの利点は、コア クラスがファクトリ クラスのインターフェイスにのみ注意する必要があり、特定の製品インスタンスの作成は特定のファクトリ サブクラスに任せられることです。このモードでは、抽象コア ファクトリ クラスを定義し、製品を作成するためのインターフェイスを定義することにより、特定の製品インスタンスを作成する作業がそのファクトリ サブクラスに遅延されます。

PHPファクトリーメソッドパターンの利点は何ですか

この記事の動作環境: Windows 10 システム、PHP バージョン 7.1、Dell G3 コンピューター。

php ファクトリ メソッド パターンの利点は何ですか。

このパターンでは、抽象コア ファクトリ クラスを定義し、製品オブジェクトを作成するためのインターフェイスを定義することにより、特定の製品インスタンスを作成する作業が行われます。他の Factory サブクラスに完了が遅れる。

この利点は、コア クラスがファクトリ クラスのインターフェイス定義のみに焦点を当て、特定の製品インスタンスの作成は特定のファクトリ サブクラスに任せられることです。システムに新しい製品を追加する必要がある場合、既存のシステム コードを変更する必要はありません。特定の製品クラスとそれに対応するファクトリ サブクラスを追加するだけで済みます。これにより、システムのスケーラビリティが向上し、開閉原則に準拠します。オブジェクト指向プログラミングのこと。

<?php
interface Animal{
  public function run();
  public function say();
}
class Cat implements Animal
{
  public function run(){
      echo "I ran slowly <br>";
  }
  public function say(){
      echo "I am Cat class <br>";
  }
}
class Dog implements Animal
{
  public function run(){
      echo "I&#39;m running fast <br>";
  }
  public function say(){
      echo "I am Dog class <br>";
  }
}
abstract class Factory{
  abstract static function createAnimal();
}
class CatFactory extends Factory
{
  public static function createAnimal()
  {
      return new Cat();
  }
}
class DogFactory extends Factory
{
  public static function createAnimal()
  {
      return new Dog();
  }
}
 
$cat = CatFactory::createAnimal();
$cat->say();
$cat->run();
 
$dog = DogFactory::createAnimal();
$dog->say();
$dog->run();

ファクトリ メソッド パターンは、単純なファクトリ パターンをさらに抽象化し、推進したものです。オブジェクト指向ポリモーフィズムの使用により、ファクトリ メソッド パターンは単純なファクトリ パターンの利点を維持し、その欠点を克服します。ファクトリ メソッド パターンでは、コア ファクトリ クラスはすべての製品の作成を担当しなくなり、特定の作成作業はサブクラスに任せられます。

このコア クラスは、特定のファクトリが実装する必要があるインターフェイスを提供することのみを担当し、製品クラスがどのようにインスタンス化されるかについての詳細は担当しません。これにより、ファクトリ メソッド パターンをシステムに導入できるようになります。ファクトリーの役割を変更せずに新しい機能を追加できます。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPファクトリーメソッドパターンの利点は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。