PHP デザインパターン (2)

WBOY
リリース: 2016-08-08 09:33:08
オリジナル
933 人が閲覧しました

最近から、前週に遭遇した問題や思いついた新しいアイデアを記録するために、毎週少なくとも2つのブログを更新するという目標を設定しました。一方で、私は自分が持っている知識を記録します。第二に、私のブログ記事はあまり良くありませんが、少数の読者に一定の影響を与える可能性があると私は信じています。オリジナルのブログ記事をどんどん書いていけば、レベルは確実に上がっていきますし、どんどん奥が深くなっていきます(笑)専門的な知識だけでなく、知識も豊富な有名ブロガーが羨ましいです。ライティングスキル)。週に 2 つの記事では、記録したいことすべてを記録することはできません。今週と同様に、ログ システム、バイナリ データ キャッシュ (実際には、下位データベースと呼ぶ方が適切です) もあります。 QQwry.dat データの解釈と zip 圧縮ファイルの追加については、今後ゆっくりとブログに更新していきます。 さて、今回は別のモデルを紹介します。

  • シンプルなファクトリーモード

実はこのモードもよく使われているので最初に紹介すべきなのですが、もっと多くのシングルトンモードに触れてきたので、最初にシングルトンモードを紹介します。シンプル ファクトリ パターン、まずその定義を見てください。 デザイン パターンの種類に関して言えば、シンプル ファクトリ パターンは静的ファクトリ メソッド パターンとも呼ばれる作成パターンですが、23 の GOF デザイン パターンの 1 つではありません。単純なファクトリ パターンでは、ファクトリ オブジェクトを使用して、どの製品クラス インスタンスを作成するかを決定します。シンプル ファクトリ パターンは、ファクトリ パターン ファミリの中で最も単純かつ最も実用的なパターンであり、さまざまなファクトリ パターンの特別な実装として理解できます。

プロジェクトにおけるシンプルなファクトリーパターンの利点は何ですか?彼には 2 つの利点があります:

1. 1 つ目は、新しいメソッドを使用してさまざまなクラスをインスタンス化するのではなく、単純なファクトリ パターンを使用してさまざまなパラメータに従ってさまざまなクラスをインスタンス化することで、ユーザーがより適切に管理できるようにします。

2. 次に、インスタンス化されるクラスが複数のファイルで使用されている場合、クラス名を変更するときに、クラスをインスタンス化するすべてのファイルを変更するのではなく、ファクトリ クラスのみを変更する必要があります (少し味気ない)。はまれです)。

最も古典的で最もよく理解されている単純な工場パターン、オペレーター操作の例を見てください:

単純なファクトリ パターンのファクトリ クラスは、通常、静的メソッドを使用して、異なるパラメータを受け入れることによって異なるオブジェクト インスタンスを返します。コードはハードコーディングされているため、コードを変更せずに拡張することはできず、OCP (拡張機能の開発、変更の場合) に違反します。 )閉鎖原則)。

リーリー

  • ファクトリーモード

これまでプロジェクトでシンプルなファクトリパターンしか触れたことがなかったのですが、この記事を書くために調べてみたところ、シンプルなファクトリパターン(静的ファクトリパターンとも呼ばれます)、ファクトリパターンの3つがあることがわかりました。 、そして抽象的なファクトリーパターンを読んだ後、それは単にOCPの原則に準拠しているだけであり、抽象的なプロダクトインターフェイスと抽象的なファクトリーインターフェイスに準拠する必要があるだけです。元のコードを変更せずに特定の製品とファクトリを拡張し、ファクトリ モードの長所と短所を要約します:

利点: まず、OCP 原則に準拠しており、スケーラビリティが向上します。次に、特定のファクトリ ロールを変更するときに、独自のファクトリ ロールを見つけるだけで済み、心配する必要がありません。他のファクトリーロールの実装への影響について。

欠点: コードが多すぎるため、各製品にはプロダクト クラスとファクトリー クラスが必要です。この欠点は、単純なファクトリ パターンとファクトリ パターンを組み合わせ、同様の製品クラスのファクトリ クラスを 1 つにマージすることで解決できます。

リーリー

ファクトリークラスは特定のプロジェクトで使用されたことがありません。それについて話すときはいつも少し奇妙に感じます。何か間違っている、または不適切な点がある場合は、専門家や先輩が指摘してくれることを願っています。

送ってください~

以上、PHPのデザインパターン(2)を内容も含めて紹介しましたが、PHPチュートリアルに興味のある方の参考になれば幸いです。

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