PHPパターン設計ファクトリーパターン
以前の PHP モード設計のシングルトン モードを引き継ぎます (あまり関係がないようですが)。今日は、基本的なパターン設計の 2 つ目であるファクトリー パターンについて説明します。
それでは、ファクトリーモードとは何ですか?
名前から判断すると、何の手がかりもなさそうです。ファクトリーモード、生産に関連していますか?それとも製造過程に関係があるのでしょうか?それは工場のリーダーと関係があるのでしょうか?それはリーダー秘書と関係がありますか?長官…わかりました、あまり近づかないようにしましょう。いわゆる工場モデルは実際には生産に関連しています。何を生産するか?生成されるのは、インスタンス オブジェクトです。製造にはどのような設備が使用されますか? ファクトリークラスを介して生成されます。どうやって生産するのでしょうか? ファクトリ クラスは、独自の静的メソッドを呼び出してオブジェクト インスタンスを生成します。
ファクトリ パターンには、一般原則に従って Factory という名前の静的メソッドであるキー構成があります。ただし、これは単なる原則であり、ファクトリ メソッドには任意の名前を付けることができますが、この静的メソッドは任意のパラメータを受け入れることもできます。データであり、オブジェクトを返す必要があります。
なぜファクトリーモードを使用するのですか?
ファクトリ パターンに触れたことのない多くの人は、なぜオブジェクトを作成するためにファクトリ クラスを構築するのにこれほど多くの労力を費やさなければならないのかと尋ねずにはいられません。メンテナンスの容易さや拡張性などを適用する代わりに、このような単純な問題を考慮することができます。プロジェクト内の場合は、クラスを通じてオブジェクトを作成します。ほぼ完成している、または完成していて関数を拡張する必要がある場合、元のクラス名があまり適切ではないことが判明したり、関数拡張を実現するにはクラスにコンストラクター パラメーターを追加する必要があることがわかります。なんてことだ!このクラスを通じて多数のオブジェクト インスタンスを作成しましたが、それらを 1 つずつ変更する必要がありますか?今になって初めて「高凝集性・低結合性」の広さと深さを感じます。問題ありません。ファクトリ メソッドでこの問題は解決できます。
もう一度考えてみてください。データベースに接続したいのですが、php、mysql 拡張機能、mysqli 拡張機能、PDO 拡張機能など、いくつかのメソッドがあります。将来の操作のためにオブジェクトが必要なだけです。どれが必要かは状況によって異なります。全員がデータベースに接続しているため、接続の確立、クエリ、切断などの同じ機能が必要です (インターフェイスの重要性はここで示されています)。全体として、これらの方法は「統一され、外部の世界に対して統一される」必要があります。これを達成するにはどうすればよいでしょうか?工場出荷時のパターンを活用してください。
ファクトリーパターンを実装するにはどうすればよいですか?
シングルトンモードと比較して、上記、ファクトリクラス、ファクトリクラスの静的メソッドで十分な情報を提供しました。静的メソッドで作成する必要があるオブジェクト インスタンスを新規作成するだけです。もちろん、上記の 2 番目の質問については、ファクトリ クラスの静的メソッドのパラメータに基づいて単純に判断できます。 if..else.. を使用するか switch..case.. を使用するかに関係なく、作成するクラスを決定する作業を迅速かつ効率的に完了できると便利です。最後に、ファクトリ クラスの静的メソッドはオブジェクトを返すことを忘れないでください。 2つどころか3つもありません。
基本的なファクトリ クラス :
//要创建对象实例的类class MyObject{ } //工厂类class MyFactory{public static function factory(){return new MyObject(): }} $instance=MyFactory::factory();
もう少し複雑なファクトリ パターン:
<?phpinterface Transport{ public function go();}class Bus implements Transport{ public function go(){ echo "bus每一站都要停"; }}class Car implements Transport{ public function go(){ echo "car跑的飞快"; }}class Bike implements Transport{ public function go(){ echo "bike比较慢"; }}class transFactory{ public static function factory($transport) { switch ($transport) { case 'bus': return new Bus(); break; case 'car': return new Car(); break; case 'bike': return new Bike(); break; } }}$transport=transFactory::factory('car');$transport->go();
ファクトリの静的メソッドを Factory() にする必要がある場合、愚かにもファクトリ クラスに再度名前を付けないでください。工場。なぜ?同じ名前のコンストラクターを忘れないでください~
最後に、多くの初心者は他の人よりも野心的です。彼らは、if..else..、セッション、クッキーを学んだばかりです。より高度なものにする必要があります。人々と話していると、拡張性や保守性などについてよく話されます。たとえば、あなたはしばらく言葉を失うでしょう。コードを書いているときも、人から学んでいるときも、自分は常に「大勢の中で他者を探す」段階にいると感じることがあります。一生懸命勉強した後、ふと振り返ると、「あの人は薄暗いところにいる」と気づきます。 」と叫び、「この人は...「そうだったことが判明しました」。
私がパターンデザインの方法を知っていることはあえて認めませんが、私は自分の学習プロセスを記録するためにブログを共有したいと思っています。それが他の人を助けることができれば、それはさらに良いです~~~
シリーズ記事:
phpパターン設計のシングルトンパターン
phpパターン設計のファクトリーパターン

ホット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)

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
