ホームページ > バックエンド開発 > PHPチュートリアル > シンプルなファクトリーパターンとPHP実装

シンプルなファクトリーパターンとPHP実装

WBOY
リリース: 2016-06-23 13:04:40
オリジナル
918 人が閲覧しました


Simple Factory Pattern:

静的ファクトリメソッドパターンとも呼ばれ、クラス作成パターンに属します。単純なファクトリ パターンでは、さまざまなパラメータに従ってさまざまなクラスのインスタンスを返すことができます。単純なファクトリ パターンは、他のクラスのインスタンスの作成を担当するクラスを具体的に定義します。作成されたインスタンスには通常、共通の親クラスがあります。

単純なファクトリ パターンには次のロールが含まれます:

ファクトリ: ファクトリ ロール、ファクトリ ロールはすべてのインスタンスを作成する内部ロジックの実装を担当します

製品: 抽象製品ロール、抽象製品ロールはすべての親クラスです作成されたオブジェクト。インスタンスによって共有されるすべてのパブリック インターフェイスを記述します。

ConcreteProduct: 特定の製品ロール。作成されたすべてのオブジェクトは、このロールの特定のクラスのインスタンスとして機能します。

UML 図:

シンプルファクトリパターンのデメリット
1. ファクトリクラスは製品作成ロジックをすべて集中しているため、一度正常に動作しなくなるとシステム全体に影響が出ます。
2. 単純なファクトリーパターンを使用すると、システム内のクラスの数が増加し、システムが複雑になり、特定の手順を理解することが難しくなります。
3. システムの拡張が難しい 新しい製品を追加すると、工場のロジックを変更する必要があり、製品の種類が多いと、工場のロジックが複雑になりすぎて、システムの拡張や保守に役立たない場合があります。
4. シンプルファクトリパターンでは静的ファクトリメソッドを使用しているため、ファクトリロールは継承に基づく階層構造を形成できません

abstract class Fruit{}class Apple extends Fruit{  function __construct(){    echo "Apple";  }}class Banana extends Fruit{  function __construct(){    echo "Banana";  }}class Factory{  static function fruit($classname){    if($classname == "Apple"){      return new Apple();    }else if($classname == "Banana"){      return new Banana();    }    return null;  }}/*//可以与类自动加载函数相结合class Factory{  static function fruit($classname){    return new $classname();  }}*/<br /><br />//测试Factory::fruit("Apple");Factory::fruit("Banana");
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート