PHP の単純な関心のあるデザイン パターンとは何ですか?

DDD
リリース: 2023-08-16 15:04:07
オリジナル
659 人が閲覧しました

php の単一関心の設計パターンには、次のものが含まれます: 1. ハングリー スタイルのシングルトン モード。これは、クラスのロード時にインスタンスを作成し、そのインスタンスを直接返すことを意味します。 2. レイジー スタイルのシングルトン モード。初回インスタンスは、遅延ロードを実現するためにインスタンスを取得するメソッドが呼び出されたときにのみ作成されます; 3. 遅延シングルトン モードに基づいたダブル チェック ロック シングルトン モードは、ロックを通じてスレッド セーフを確保し、遅延ロードとスレッド セーフを実現します。静的変数のシングルトン モードを使用し、インスタンスを静的変数に保存し、インスタンスを取得する静的メソッドを提供して、単純なスレッド セーフを実現します。

PHP の単純な関心のあるデザイン パターンとは何ですか?

#この記事の動作環境: Windows 10 システム、PHP8.1.3 バージョン、Dell G3 コンピューター。

PHP シングルトン設計パターンは、一般的に使用される設計パターンであり、クラスにインスタンスが 1 つだけ存在し、グローバル アクセス ポイントを提供するようにするために使用されます。

PHP では、シングルトン設計パターンを実装する方法がいくつかあります。

Hungry Chinese Singleton パターン

Hungry Chinese Singleton パターンは、次のことを意味します。クラスがロードされたときにインスタンスを取得し、そのインスタンスを直接返します。この方法の利点は実装が簡単でスレッドセーフであることですが、欠点は遅延読み込みを実現できないことです。

class Singleton {
    private static $instance = new Singleton();
    private function __construct() {}
    public static function getInstance() {
        return self::$instance;
    }
}
ログイン後にコピー

遅延シングルトン モード

遅延シングルトン モードとは、インスタンスを取得するメソッドが初めて呼び出されたときにのみインスタンスが作成されることを意味します。このアプローチの利点は遅延読み込みを実装できることですが、欠点はマルチスレッド環境でスレッド セーフティの問題が発生する可能性があることです。

class Singleton {
    private static $instance = null;
    private function __construct() {}
    public static function getInstance() {
        if (self::$instance == null) {
            self::$instance = new Singleton();
        }
        return self::$instance;
    }
}
ログイン後にコピー
ログイン後にコピー

ダブル チェック ロック シングルトン モード

ダブル チェック ロック シングルトン モードは、遅延シングルトン モードに基づいており、ロックを通じてスレッドの安全性を確保します。このアプローチの利点は、遅延読み込みとスレッドの安全性が実現されることですが、欠点は、コードが複雑になることです。

class Singleton {
    private static $instance = null;
    private function __construct() {}
    public static function getInstance() {
        if (self::$instance == null) {
            synchronized(self::class) {
                if (self::$instance == null) {
                    self::$instance = new Singleton();
                }
            }
        }
        return self::$instance;
    }
}
ログイン後にコピー

静的変数を使用したシングルトン モード

静的変数を使用したシングルトン モードとは、インスタンスを静的変数に保存し、それを取得するための静的メソッドを提供することを意味します。 。この方法の利点は実装が簡単でスレッドセーフであることですが、欠点は遅延読み込みを実現できないことです。

class Singleton {
    private static $instance = null;
    private function __construct() {}
    public static function getInstance() {
        if (self::$instance == null) {
            self::$instance = new Singleton();
        }
        return self::$instance;
    }
}
ログイン後にコピー
ログイン後にコピー

上記は、いくつかの一般的な PHP シングルトン設計パターンの実装方法です。特定のニーズとシナリオに応じて、シングルトンを実装する適切な方法を選択できます。

以上がPHP の単純な関心のあるデザイン パターンとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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