ホームページ  >  記事  >  バックエンド開発  >  PHP デザイン パターンにおけるファクトリ モードとシングルトン モードの違い

PHP デザイン パターンにおけるファクトリ モードとシングルトン モードの違い

一个新手
一个新手オリジナル
2017-10-18 09:07:562749ブラウズ
//让该类在外界无法造对象
//让外界可以造一个对象,做一个静态方法返回对象
//在类里面通过让静态变量控制返回对象只能是一个。

シングルトン パターンの主なポイントは 3 つあります。

  1. まず、クラスはインスタンスを 1 つだけ持つことができます。

  2. 2 つ目は、このインスタンスを独自に作成する必要があります。このインスタンスはシステム全体に提供されます。

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

1. PHP は主にデータベース アプリケーションで使用されます。オブジェクト指向で開発する場合、アプリケーション内で多数のデータベース操作が行われます。シングルトン モードを使用すると、新しい操作によって大量のリソースが消費されることを回避でき、データベース接続を削減して、過剰な接続が発生する可能性を低くすることもできます。

  1. 2. システム内の特定の構成情報をグローバルに制御するためにクラスが必要な場合は、zend フレームワークの FrontController 部分にあるシングルトン モードを使用して簡単に実装できます。

  2. 3. ページリクエストでは、すべてのコード (データベース操作クラス db など) が 1 つのクラスに集中しているため、どこでも var_dumping を避けることができます。 。

  3. 2. 単純なファクトリパターン

①抽象基本クラス: クラス内でいくつかの抽象メソッドを定義し、サブクラスに実装します

  • ② 抽象基本クラスから継承するサブクラス: 抽象メソッドの実装基本クラス

  • ③ファクトリークラス: 対応するすべてのサブクラスをインスタンス化するために使用されます

  • class cat
    {
        public $name;
        private function __construct()
        {
    
        }
        static $temp;
        static function new_ob()
        {
            if(empty(self::$temp)){
               self::$temp = new cat();
            }
            return self::$temp;
        }
        function  speak(){
            return "喵喵喵";
        }
    }
    //$mao = new cat();
    
    
    //如果没有猫就造一个,然后等于新的xxx,如果有,直接等于。达到限制的目的。
    //$mao;
    //if (empty($mao)){
    //    $mao = new cat();
    //}
    //    $xxx = $mao;
    
    $mao = cat::new_ob();
    $mao2 = cat::new_ob();
    //给1猫改名字,2猫的名字输出为1猫改的名字。此为单例。
    $mao->name = "py";

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

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