最初の 2 つのセクションでは、デザイン パターンとは何か、および 6 つの主要な原則について説明します。最初の 2 つのセクションを読んだ後は、デザイン パターンについての予備的な理解が得られると思います。次に、デザイン パターンの分類について説明します。
オブジェクト指向のデザイン パターンは、一般に、創造、構造、動作の 3 つのカテゴリに分類されます。
クリエイティブ タイプ: オブジェクトを作成するときに、オブジェクトを直接インスタンス化するのではなく、プログラムが特定のシナリオに基づいてオブジェクトの作成方法を決定するため、パフォーマンスの向上とアーキテクチャ上の利点が確保されます。作成パターンには主に、単純なファクトリ パターン (23 のデザイン パターンのいずれでもない)、ファクトリ メソッド、抽象ファクトリ パターン、シングルトン パターン、ジェネレータ パターン、およびプロトタイプ パターンが含まれます。
構造: 複数のオブジェクトをより大きな構造に整理するために使用されます。構造パターンには主にアダプター モード、ブリッジ モード、コンビネーター モード、デコレーター モード、ファサード モード、Hengyuan モード、プロキシ モードが含まれます。
動作: システム内のオブジェクト間の通信や、複雑なシステム内のプロセスを制御する方法を支援するために使用されます。行動パターンには主に、コマンド モード、インタプリタ モード、イテレータ モード、メディエータ モード、メモ モード、オブザーバ モード、ステート モード、ストラテジー モード、テンプレート モード、ビジター モード、および責任連鎖モードが含まれます。
今日は主に最初の簡単なファクトリーパターンの作成を紹介します。
注: この一連のブログを読むときは、UML クラス図とオブジェクト指向 PHP プログラミングの基本を理解している必要があります。
シンプル ファクトリ パターンは、一般的に使用される 23 のオブジェクト指向設計パターンの 1 つではありません。単純なファクトリ パターンでは、ファクトリ オブジェクトを使用して、どの製品クラス インスタンスを作成するかを決定します。シンプル ファクトリ パターンは、ファクトリ パターン ファミリの中で最も単純かつ最も実用的なパターンであり、さまざまなファクトリ パターンの特別な実装として理解できます。その本質は、ファクトリ クラスが、受信パラメータに基づいて製品クラス (これらの製品クラスは親クラスまたはインターフェイスから継承する) のどのインスタンスを作成する必要があるかを動的に決定することです。
役割と責任:
Factory (SimpleFactory) ロール: シンプル ファクトリ パターンの中核であり、すべてのインスタンスを作成する内部ロジックの実装を担当します。ファクトリ クラスは外部から直接呼び出して、必要な製品オブジェクトを作成できます。
Abstract Product (IProduct) ロール: 単純なファクトリ パターンによって作成されたすべてのオブジェクトの親クラスで、すべてのインスタンスに共通のパブリック インターフェイスを記述します。
具体的な製品の役割: これは、単純なファクトリ パターンの作成ターゲットです。作成されるすべてのオブジェクトは、この役割を果たす特定のクラスのインスタンスです。
要件: 対応する属性値の提供に基づいて、単純なファクトリによって、対応する特性を持つ製品オブジェクトを作成します。
ここで、上記の UML クラス図に基づいて次の PHP コードを作成します。
リーリー
リーリー
単純なファクトリの利点: オブジェクトの呼び出し元がオブジェクト作成プロセスから分離され、オブジェクトの呼び出し元がオブジェクトを必要とする場合、ファクトリに直接リクエストできます。これにより、オブジェクトの呼び出し元とオブジェクトの実装クラスのハードコード的な結合が回避され、システムの保守性と拡張性が向上します。
単純なファクトリの欠点: プロダクトを変更すると、それに応じてファクトリ クラスも変更する必要があります。たとえば、M 数値の N 乗を求めるなどの操作クラスを追加したい場合は、大文字と小文字を変更する必要があります。元のクラスを変更すると、オープン性の原則に違反します。
。