ホームページ  >  記事  >  バックエンド開発  >  PHPファクトリーモードとシングルトンモードの違い

PHPファクトリーモードとシングルトンモードの違い

藏色散人
藏色散人オリジナル
2019-10-09 10:27:312778ブラウズ

PHPファクトリーモードとシングルトンモードの違い

#PHP ファクトリ モードとシングルトン モードの違い

シングルトン モード: インスタンス化の繰り返しを防ぎ、大量のインスタンス化を回避します。新しい操作によりシステム リソースとメモリ リソースの消費が削減されるため、インスタンス オブジェクトは 1 つだけになります

header("Content-type: text/html; charset=utf-8");   //定义字符编码,防止乱码
/**
 * 单利类
 */
class Single
{
    private static $_instance;  //保存实例的对象
 
 
    private function __construct()  //定义构造方法
    {
 
    }
 
    private function __clone()  //定义一个空方法防止被外部克隆
    {  
 
    }
 
 
    public static function getInstance()    //定义一个获取实例对象的方法
    {
        if (!(self::$_instance  instanceof Single)) {
            self::$_instance = new self();
        }
        return self::$_instance;        //返回实例对象
    }
 
    /**
     * 测试方法
     */
    public function test()
    {
        echo "单利模式";
    }
 
}
 
 
$run=Single::getInstance();
$run->test();

ファクトリ モード: ファクトリ メソッドを使用して新しい操作を置き換えるモードです。インスタンス化されたオブジェクトを変更する必要がある場合は、クラス名、ファクトリ メソッドで変更するだけです。コード内の特定のインスタンス化の場所を 1 つずつ探す必要はありません。

header("content-type:text/html;charset=utf-8"); //定义字符编码,防止乱码
/**
 * 测试类一
  */
class demo1
{
    //定义一个test1方法
    public function test1()
    {
        echo '这是demo1类的test1方法'.PHP_EOL;
    }
}
/**
 * 测试类二
  */
class demo2
{
    //定义一个test2方法
    public function test2()
    {
        echo '这是demo2类的test2方法'.PHP_EOL;
    }
}
/**
 * 工厂类
 */
class Factoty
{
    // 根据传参类名,创建对应的对象
    static function createObject($className)
    {
        return new $className();
    }
}
/**
 * 通过传类名,调用工厂类里面的创建对象方法
 */
$demo = Factoty::createObject('demo1');
$demo->test1();             //输出这是demo1类的test1方法
$demo = Factoty::createObject('demo2');
$demo->test2();            //输出这是demo2类的test2方法

PHP の詳細については、

PHP 中国語 Web サイトをご覧ください。 !

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

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