以前、3種類のphpファクトリーモードを紹介しましたが、phpファクトリーモードとは何なのか、phpファクトリーモードを使用する理由についても詳しくご紹介します。 !
通常、クラスをインスタンス化するときは、クラスの構築時にさまざまなパラメーターに基づいて必要な結果をフィードバックできるように、いくつかのパラメーターをそれに与えます。
たとえば、次は非常に単純な User クラスです:
コードは次のとおりです:
<?php interface IUser{ function getName(); function getAge(); } class User implements IUser{ protected $_name; protected $_age; function construct($name, $age){ $this->_name = $name; $this->_age = (int)$age; } function getName(){ return $this->_name; } function getAge(){ return $this->_age; } } ?>
このクラスをインスタンス化する場合は、次のようになります:
$ u = new User('Xiao Ming', 19);
一般に、このクラスがめったに使用されない場合、これは大きな影響はなく、非常に優れています。
突然、このクラスに分類を追加して、Xiao Ming を学生グループに追加したいと思います。クラス コードを変更するのは非常に簡単ですが、このクラスを変更する前に、多くのファイルで何度もインスタンス化されている場合は、次のようになります。パラメーターを追加することは、次のように置き換える必要があるため、非常に面倒になります:
$u = new User('Xiaoming',19,'student');
もちろん、それを で渡すこともできます。デフォルト値の設定は、この種の作業の重複を避けるために使用されますが、実際、これはコードの優雅さの観点からは良くありません。識別子を介してパラメーターのセットに対応できるファクトリ メソッドがあると想像してください。 、このパラメータを特定のテキストに保存します。ドキュメントは配列の形式でファクトリクラスに直接保存できます。パラメータを追加または削除する必要がある場合でも、はるかに簡単になります。プロパティ では、コードをどこでも置き換える必要はありません。これはファクトリー クラスです (メソッドを User クラスに直接格納することもできます) コードは次のとおりです:
interface IUser{ function getName(); function getAge(); } class User implements IUser{ protected $_group; protected $_name; protected $_age; function construct($name, $age, $group){ $this->_group = $group; $this->_name = $name; $this->_age = (int)$age; } function getName(){ return $this->_name; } function getAge(){ return $this->_age; } } class Fuser{ private static $group = array( array(‘小明‘,19,‘学生‘), array(‘小王‘,19,‘学生‘) ); static function create($id){ list($name, $age, $group) = self::$group[(int)$id]; return new User($name, $age, $group); } } echo Fuser::create(0)->getName();結果が出力されるはずです。 「シャオミン」。
友達は PHP ファクトリー パターンを使用する利点をある程度理解しており、この記事で学んだことを自分の仕事で実践できると思います。
関連する推奨事項:3 つの PHP ファクトリ パターンの簡単な紹介 PHP ファクトリ パターンとは何ですか?なぜphpファクトリーモードを使用するのでしょうか? PHPファクトリーパターンのサンプルコードの3つの形式を詳しく解説
以上がPHPファクトリーパターンを使用するメリットの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。