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");