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

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Java フレームワークにおけるデザイン パターンとアーキテクチャ パターンの違いは、デザイン パターンがソフトウェア設計における一般的な問題に対する抽象的な解決策を定義し、ファクトリ パターンなどのクラスとオブジェクト間の相互作用に焦点を当てていることです。アーキテクチャ パターンは、階層化アーキテクチャなどのシステム コンポーネントの編成と相互作用に焦点を当てて、システム構造とモジュールの間の関係を定義します。

アダプター パターンは、互換性のないオブジェクトが連携できるようにする構造設計パターンであり、オブジェクトがスムーズに対話できるように、あるインターフェイスを別のインターフェイスに変換します。オブジェクト アダプタは、適応されたオブジェクトを含むアダプタ オブジェクトを作成し、ターゲット インターフェイスを実装することにより、アダプタ パターンを実装します。実際のケースでは、クライアント (MediaPlayer など) はアダプター モードを通じて高度な形式のメディア (VLC など) を再生できますが、クライアント自体は通常のメディア形式 (MP3 など) のみをサポートします。

デコレータ パターンは、元のクラスを変更せずにオブジェクトの機能を動的に追加できる構造設計パターンです。抽象コンポーネント、具象コンポーネント、抽象デコレータ、具象デコレータの連携によって実装され、ニーズの変化に合わせてクラス機能を柔軟に拡張できます。この例では、ミルクとモカのデコレーターが総額 2.29 ドルで Espresso に追加されており、オブジェクトの動作を動的に変更するデコレーター パターンの力を示しています。

1. ファクトリ パターン: オブジェクト作成とビジネス ロジックを分離し、ファクトリ クラスを通じて指定された型のオブジェクトを作成します。 2. オブザーバー パターン: サブジェクト オブジェクトが状態の変化をオブザーバー オブジェクトに通知できるようにし、疎結合とオブザーバー パターンを実現します。

Java フレームワークでデザイン パターンを使用する利点には、コードの可読性、保守性、拡張性の向上が含まれます。欠点としては、複雑さ、パフォーマンスのオーバーヘッド、使いすぎによる学習曲線の急上昇などが挙げられます。実際のケース: プロキシ モードはオブジェクトの遅延読み込みに使用されます。デザイン パターンを賢く使用して、その利点を活用し、欠点を最小限に抑えます。

デザイン パターンは、再利用可能で拡張可能なソリューションを提供することで、コード メンテナンスの課題を解決します。 オブザーバー パターン: オブジェクトがイベントをサブスクライブし、イベントが発生したときに通知を受信できるようにします。ファクトリ パターン: 具象クラスに依存せずにオブジェクトを作成するための集中的な方法を提供します。シングルトン パターン: クラスには、グローバルにアクセス可能なオブジェクトの作成に使用されるインスタンスが 1 つだけ存在することが保証されます。

Guice フレームワークは、次のような多くの設計パターンを適用します。 シングルトン パターン: @Singleton アノテーションによってクラスのインスタンスが 1 つだけであることを保証します。ファクトリ メソッド パターン: @Provides アノテーションを使用してファクトリ メソッドを作成し、依存関係の注入中にオブジェクト インスタンスを取得します。戦略モード: アルゴリズムをさまざまな戦略クラスにカプセル化し、@Named アノテーションを通じて特定の戦略を指定します。

TDD は、高品質の PHP コードを作成するために使用されます。その手順には、テスト ケースを作成し、期待される機能を記述し、テスト ケースを失敗させることが含まれます。過度な最適化や詳細な設計を行わずに、テスト ケースのみが通過するようにコードを記述します。テスト ケースが合格したら、コードを最適化およびリファクタリングして、可読性、保守性、およびスケーラビリティを向上させます。
