无法确保仅以单例模式创建一个实例

扎扎米

我正在尝试创建一个可以实例化一次的类。

$ins1,$ins4,$ins3 

以这样一种方式创建:如果已经定义了静态变量$ instance,它将一次又一次地返回。

$ins1==$ins4 returns true

实例$ins4,$ins5是使用new关键字创建的。当我使用时

$ins4==$ins5

它也返回真相如何确定仅创建一个实例

<?php
class Singleton{

     private static $instance;

       public static function getInstance(){

            if(!self::$instance){
                echo " I AM THE FIRST INSTANCE and i am not from bypass<br>";
                self::$instance = new Singleton();
                return self::$instance;
            }else{
                echo "i am from bypass<br>";
                return self::$instance;
            }
       }

}

$ins1 = Singleton::getInstance();
$ins2 = Singleton::getInstance();
echo $ins1==$ins2;
echo '<br>';
$ins3 = Singleton::getInstance();

$ins4 = new Singleton();
$ins5 = new Singleton();

echo $ins4 == $ins5;
?>

您需要制作构造函数protectedprivate,否则任何人都可以调用它:

class Singleton {
    protected __construct() {}

    public static getInstance() {
        ...
    }
}

话虽如此,强制这样的单例很少是一个好主意。更好的主意是只实例化该类一次,然后根据需要通过依赖注入将其传递给它。管理实例化和传递的依赖项注入容器在这里很有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在使用python单例模式时只实现最后一个实例

来自分类Dev

Scala脚本引擎创建单例的另一个实例

来自分类Dev

Guice:在创建模块之前实例化一个单例

来自分类Dev

Scala脚本引擎创建单例的另一个实例

来自分类Dev

是否可以创建一个维护实例字典的单例工厂类?

来自分类Dev

如何实例化一个单例

来自分类Dev

如何创建一个在春季创建单例的工厂

来自分类Dev

如何创建一个在春季创建单例的工厂

来自分类Dev

为什么这种基于Java的Spring配置创建一个单例bean的两个实例?

来自分类Dev

如何确保仅创建该类对象的一个实例?

来自分类Dev

Spring Boot确保TaskScheduler的单例实例

来自分类Dev

无法创建单例

来自分类Dev

在不使用单例的情况下将类限制为一个实例?

来自分类Dev

Scala单例作为另一个类的实例

来自分类Dev

将函数转换为可返回一个实例的单例类

来自分类Dev

我可以有一个“单例” emacs实例吗?

来自分类Dev

在不使用单例的情况下将类限制为一个实例?

来自分类Dev

Scala单例作为另一个类的实例

来自分类Dev

如何正确创建一个单例对象并在C ++中使用它?

来自分类Dev

创建一个实现派生类单例的基类

来自分类Dev

重新创建一个基于shared_ptr的单例

来自分类Dev

如何正确创建一个单例对象并在C ++中使用它?

来自分类Dev

在 Apache Spark 上为每个工作人员创建一个单例

来自分类Dev

如何使用 PostSharp 创建一个懒惰的单例方面?

来自分类Dev

快速的单例无法从另一个班级访问

来自分类Dev

我们如何确保我们只能创建一个类的实例?

来自分类Dev

我们如何确保我们只能创建一个类的实例?

来自分类Dev

无法创建一个类的多个实例?

来自分类Dev

无法在Java中创建一个类的多个实例

Related 相关文章

  1. 1

    为什么在使用python单例模式时只实现最后一个实例

  2. 2

    Scala脚本引擎创建单例的另一个实例

  3. 3

    Guice:在创建模块之前实例化一个单例

  4. 4

    Scala脚本引擎创建单例的另一个实例

  5. 5

    是否可以创建一个维护实例字典的单例工厂类?

  6. 6

    如何实例化一个单例

  7. 7

    如何创建一个在春季创建单例的工厂

  8. 8

    如何创建一个在春季创建单例的工厂

  9. 9

    为什么这种基于Java的Spring配置创建一个单例bean的两个实例?

  10. 10

    如何确保仅创建该类对象的一个实例?

  11. 11

    Spring Boot确保TaskScheduler的单例实例

  12. 12

    无法创建单例

  13. 13

    在不使用单例的情况下将类限制为一个实例?

  14. 14

    Scala单例作为另一个类的实例

  15. 15

    将函数转换为可返回一个实例的单例类

  16. 16

    我可以有一个“单例” emacs实例吗?

  17. 17

    在不使用单例的情况下将类限制为一个实例?

  18. 18

    Scala单例作为另一个类的实例

  19. 19

    如何正确创建一个单例对象并在C ++中使用它?

  20. 20

    创建一个实现派生类单例的基类

  21. 21

    重新创建一个基于shared_ptr的单例

  22. 22

    如何正确创建一个单例对象并在C ++中使用它?

  23. 23

    在 Apache Spark 上为每个工作人员创建一个单例

  24. 24

    如何使用 PostSharp 创建一个懒惰的单例方面?

  25. 25

    快速的单例无法从另一个班级访问

  26. 26

    我们如何确保我们只能创建一个类的实例?

  27. 27

    我们如何确保我们只能创建一个类的实例?

  28. 28

    无法创建一个类的多个实例?

  29. 29

    无法在Java中创建一个类的多个实例

热门标签

归档