English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHPの単例モードと工場モードの詳細

シングルトンパターンの概念

シングルトンパターンは、アプリケーションの全体でクラスが1つのオブジェクトインスタンスしか持たないデザインパターンです。

シングルトンパターンの特徴

クラスはアプリケーションの全体でたった1つのインスタンスしか持てません

クラスはこのインスタンスを自身で作成する必要があります

このインスタンスをシステム全体に提供する必要があります

PHPでシングルトンパターンを使用する理由

私はPHPを使用して、MySQL、Redis、Memcacheなどのさまざまな関係型および非関係型データベースと多くの操作を行います。したがって、アプリケーションには大量のデータベース接続操作が存在し、シングルトンパターンを使用しない場合、毎回new操作を行う必要がありますが、毎回newすると大量のメモリリソースとシステムリソースが消費され、データベース接続を開閉するたびにデータベースに対する大きな負担と無駄が発生します。

クラスのユニークなインスタンスを保存するための静的メンバ変数が必要です(通常は$instanceがプライベート変数です)

コンストラクタとクローンメソッドはプライベートに宣言する必要があります。外部プログラムがクラスをnewしてシングルトンパターンの意味を失わないようにします

このインスタンスにアクセスするための公共の静的メソッドを提供する必要があります。これにより、ユニークなインスタンスの参照を返します

//デザインパターン
//シングルトンパターンは同じオブジェクトを使用します
//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();
//コンストラクタをプライベートにします
//オブジェクトを間接的に作成するメソッドを作成しました
//そのメソッドに制限を加えます

工場クラス

特定のオブジェクトを作成するためのメソッドを持つクラスであり、工場クラスはポリモーフィズムプログラミングの実践において非常に重要です。これにより、クラスを動的に置き換え、設定を変更することができ、アプリケーションをより柔軟にします。工場パターンを熟練したPHP開発者は非常に重要です。

工場パターンは、似たインターフェースを持つ異なるクラスを返すためによく使用されます。工場の一般的な使用例は、ポリモーフィズムの提供者を作成することで、アプリケーションのロジックまたは設定設定に基づいてどのクラスをインスタンス化するかを決定することです。例えば、新しい拡張後の名前を使用してクラスを拡張する場合、アプリケーションの他の部分をリファクタリングする必要はありません。

通常、工場パターンには鍵となる構造があり、一般的な原則に従って「Factory」と名付けられる静的メソッドがありますが、これはただの原則に過ぎません。工場メソッドは任意の名前で呼ばれ、任意のデータの引数を受け取り、オブジェクトを返す必要があります。

class YunSuan
{
 public $a;
 public $b;
 function Suan()
 {
  echo "二つの数の演算を行います";
 }
class gongchang
{ //機能 : 引数を1つ渡し、オブジェクトを返します
 static function chanpin($name)
 {
  switch($name)
  {
   case "'+:
    return new jia();
    break;
   case "-";
    return new jian();
    break;
  }
 }
}
$a=gongchang::chanpin("+");

これでこの記事のすべてが終わりました。この記事の内容が皆さんの学習や仕事に少しでも役立つことを願っています。また、呐喊ものじゅうのサポートをどうぞ。

声明:この記事の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしています。このウェブサイトは所有権を持ちません。また、人工編集もなく、関連する法的責任も負いません。著作権侵害の可能性のある内容が見つかった場合は、以下のメールアドレスにご連絡ください:notice#oldtoolbag.com(はてなを#に変えてメールを送信してください。通報の際は、関連する証拠を提供してください。一旦確認がついたら、このサイトは即座に侵害する可能性のあるコンテンツを削除します。)

おすすめ