ホームページ  >  記事  >  バックエンド開発  >  PHPデザインパターン:シングルトンパターンとファクトリーパターンの詳細解説

PHPデザインパターン:シングルトンパターンとファクトリーパターンの詳細解説

怪我咯
怪我咯オリジナル
2017-07-12 14:09:491242ブラウズ

1. シングルトン パターン

シングルトン パターンは、よく使用されるソフトウェアの設計パターンです。そのコア構造には、シングルトン クラスと呼ばれる特別なクラスが 1 つだけ含まれています。シングルトン モードでは、システム内にクラスのインスタンスが 1 つだけ存在し、外部からそのインスタンスに簡単にアクセスできるようにすることができるため、インスタンス数の制御が容易になり、システム リソースが節約されます。特定のクラスのオブジェクトを 1 つだけシステム内に存在させたい場合は、シングルトン パターンが最適なソリューションです。

利点

1. インスタンス制御

シングルトン パターンは、他のオブジェクトが自身のシングルトン オブジェクトのコピーをインスタンス化することを防ぎ、それによってすべてのオブジェクトが確実に一意のインスタンスにアクセスできるようにします。

2. 柔軟性

クラスがインスタンス化プロセスを制御するため、クラスはインスタンス化プロセスを柔軟に変更できます。

この記事では主にPHPのシングルケースモードファクトリーモードの関連知識を紹介します。非常に優れた参考値です。以下のエディターで見てみましょう

PHP でシングルトン モードを使用する理由

私の PHP での操作のほとんどは、mysql、redis を含むさまざまなデータベースの処理に関係します。 、memcache およびその他のリレーショナル データベースや非リレーショナル データベースを使用するため、アプリケーションでデータベースに接続するために多数の操作が必要になります。シングルトン モードを使用しない場合は、毎回新しい操作が必要になります。ただし、新しい接続を作成するたびに大量のメモリ リソースとシステム リソースが消費され、データベース接続を開いたり閉じたりするたびに、これは大きなテストとなり、データベースの無駄になります。

クラスの唯一のインスタンスを保持する静的メンバー変数が必要です (通常、$instance はプライベート変数です)

コンストラクター とクローン関数は、外部プログラムが新しいクラスから取得されて意味が失われるのを防ぐために、プライベートとして宣言する必要がありますシングルトン モードの

一意のインスタンスへの参照を返すには、このインスタンスにアクセスするパブリック静的メソッドを提供する必要があります

//设计模式
//单例模式 都是使用同一个对象
//class Ren
//{
// public $name;
// private static $dx; //存储对象
//
// private function construct()
// {
//
// }
//
// public static function DuiXiang()
// {
//  if(empty(self::$dx))
//  {
//   self:;$dx=new Ren();
//  }
//  return self::$dx;
// }
//}
//
//$r= Ren::DuiXiang();
//把构造函数变为私有
//做了一个方法来间接造对象
//在该方法里面加限制

2. ファクトリ パターン

ファクトリ パターンは、特に、多数のクラスをインスタンス化する役割を果たします。共通のインターフェイス (または共通の抽象親クラス) であり、毎回どのクラス パターンがインスタンス化されるかを事前に知る必要はありません。これはオブジェクトを作成するためのインターフェイスを定義し、サブクラスはどのクラスをインスタンス化するかを決定します。

利点

ファクトリ クラスはモデル全体の鍵であり、ファクトリ クラスを使用することにより、外部の世界から与えられる情報に基づいてオブジェクトのどのクラスを作成するかを決定するために必要な論理的判断が含まれます。特定の製品オブジェクトを直接作成できます。このような厄介な状況を解消するには、「消費者」オブジェクトのみを担当する必要があります。これらのオブジェクトがどのように作成され編成されるかは関係ありません。それぞれの責任と権利を明確にすることは、ソフトウェア アーキテクチャ全体の最適化に役立ちます。
欠点
ファクトリ クラスはすべてのインスタンスの作成ロジックを集中させるため、高凝集性の責任割り当ての原則に違反し、すべての作成ロジックをファクトリ クラスに集中させます。必要に応じて、作成できるクラスを事前に検討することしかできません。新しいクラスを追加するには、ファクトリ クラスを変更する必要があります。
システム内の特定の製品カテゴリの数が増加し続けると、さまざまな条件に応じてさまざまなインスタンスを作成するようにファクトリ クラスを要求する必要が生じる場合があります。この条件の判断と特定の製品タイプの判断が絡み合っているため、モジュール機能の拡散を回避することが困難になり、システムの保守と拡張に非常に悪影響を及ぼします
これらの欠点はファクトリメソッドパターンである程度克服されています。
使用シナリオ
ファクトリ クラスは
よりも少ないオブジェクトを作成する必要があります。顧客はファクトリ クラスに渡されるパラメータのみを知っており、オブジェクトの作成方法 (ロジック) については気にしません 単純なファクトリは簡単に違反する可能性があります。高い凝集性の責任割り当ての原則。したがって、これは通常、非常に単純な状況でのみ使用されます。

通常、ファクトリ パターンにはキー構造があり、一般原則に従って Factory という名前の静的メソッドになります。ただし、これは単なる原則であり、この静的メソッドには任意のパラメータを指定することもできます。データであり、オブジェクトを返す必要があります。

りー

以上がPHPデザインパターン:シングルトンパターンとファクトリーパターンの詳細解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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