ホームページ >バックエンド開発 >PHPチュートリアル >PHPモード デザイン登録ツリーモード

PHPモード デザイン登録ツリーモード

WBOY
WBOYオリジナル
2016-06-23 13:27:34917ブラウズ

シングルトン モードとファクトリー モードの最初の 2 つの記事を経て、いよいよ最後の基本設計パターンである登録ツリー モードに到達します。

登録ツリーモードとは何ですか?

もちろん、登録ツリーモードは、登録モード、レジストラモードとも呼ばれます。ここであえて名前を付けたのは、名前登録ツリーの方が分かりやすいと思うからです。前の 2 つの記事と同様に、この記事も名前から始まります。登録ツリー パターンは、オブジェクト インスタンスをグローバル オブジェクト ツリーに登録し、必要に応じてオブジェクト ツリーから選択するパターン設計方法です。 これを見ると、私が子供の頃に砂糖漬けのサンザを棒に付けて買ったのを思い出します。砂糖漬けのサンザの売り手は砂糖漬けのサンザを大きな棒に刺し、人々はそれを買うときにそれを外していました。違いは、登録ツリー モードでは、摘んだ後も残り、何度でも摘むことができますが、サンザシの砂糖漬けは一度摘むとなくなってしまうことです。 。 。

なぜ登録ツリーモードを使用する必要があるのでしょうか?

シングルトンパターンはプロジェクト全体で一意のオブジェクトインスタンスをどうやって作るかという問題を解決し、ファクトリパターンはnewを使わずにインスタンスオブジェクトをどうやって作るかという問題を解決します。 それでは、登録ツリー モードはどのような問題を解決したいのでしょうか? この問題を検討する前に、最初の 2 つのモデルが現在直面している制限を考慮する必要があります。 まず、シングルトンモードで独自のオブジェクトを作成するプロセス自体にも、オブジェクトが存在するかどうかという判断があります。存在する場合はオブジェクトが返され、存在しない場合はオブジェクトが作成されて返されます。 インスタンス オブジェクトが作成されるたびに、このような判断層が必要になります。 ファクトリーモデルでは、延長メンテナンスの問題がより考慮されています。 一般に、シングルトン パターンとファクトリ パターンは、より合理的なオブジェクトを生成できます。これらのオブジェクトを簡単に呼び出すにはどうすればよいでしょうか?さらに、このようにしてプロジェクト内で作成されたオブジェクトは、散在する兵士のようなものであり、全体の管理や配置には不便です。そこで、登録ツリー モデルが登場しました。シングルトン モード、ファクトリ モード、またはその 2 つの組み合わせのいずれでオブジェクトを生成したかに関係なく、オブジェクトはすべて登録ツリーに「挿入」されます。オブジェクトを使用するときは、登録ツリーから直接オブジェクトをフェッチするだけです。これは、グローバル変数を使用するのと同じくらい便利で実用的です。 また、登録ツリー パターンは、他のパターンにも非常に良いアイデアを提供します。

登録ツリーを実装するにはどうすればよいですか?

上記の説明を通じて、解決策は簡単に見つかったようです。もちろん、最初に登録ツリーとしてクラスが必要です。すべてのオブジェクトが登録ツリーに「挿入」されます。この登録ツリーは静的変数によって提供される必要があります。そして、この登録ツリーは 2 次元配列である必要があります。このクラスにはオブジェクト インスタンスを挿入するメソッド (set()) が必要であり、それに対応してオブジェクト インスタンスを元に戻すメソッド (_unset()) も必要です。もちろん、最も重要なことは、オブジェクトを読み取るメソッド (get()) を用意することです。これで、登録ツリー モードはめでたく完了です~~~

それでは、3 つのモードを少し組み合わせてみましょう。インスタンス オブジェクトを作成するだけならそれほど複雑ではありませんが、大規模なプロジェクトに適用すると、その利便性は自明です。この時点で、3 つのモードの設計が完了します。さまざまなパターン デザイン自体が相互に補完し合い、将来他のパターンを導入する際には、多かれ少なかれ 1 つまたは複数の他のデザイン パターンが使用されることになります。

たとえ特定のモデルを理解していなくても大丈夫です。プログラミングを深めていくと、突然の啓蒙が起こると思います。ぜひ一緒に進歩してください。

シリーズ記事:

phpパターンデザインのシングルトンパターン

phpパターンデザインのファクトリーパターン

phpパターンデザイン登録ツリーパターン

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP の演算子次の記事:PHP の演算子