专栏首页PHP修行之路【php设计模式】单例模式

【php设计模式】单例模式

实现单例的三个关键点:

1、使用一个静态成员来保持一个单例实例

2、一个私有的构造方法使得该类只能在类的内部方法中被实例化

3、在实例化对象的静态方法中,先判断静态变量是否已经被赋值,如果赋值则返回该静态成员如果没有则重新实例化赋值

单例模式:

class Car{
    public static $_instance = null;
    private $name;

    private function __construct($name){
        $this->name = $name;
    }

    public static function getInstance($name){
        if(!self::$_instance){
            self::$_instance = new Car($name);
        }
        return self::$_instance;
    }

    public function getName(){
        return $this->name;
    }
}

$car = Car::getInstance("benchi");

$car1 = Car::getInstance("baoma");

print_r($car->getName());
print_r($car->getName()); // 输出 benchibenchi

普通实例化类:

class Car{

    private $name;

     public function __construct($name){
         $this->name = $name;
    }

    public function getName(){
        return $this->name;
    }

}

$car = new Car("benchi");
$car1 = new Car("baoma");

print_r($car->getName());
print_r($car1->getName());  //输出 benchibaoma

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【shell脚本】字符串和数组的使用

    码缘
  • 【php设计模式】桥接模式

    定义: 将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

    码缘
  • 【php设计模式】观察者模式

    当对象间存在一对多关系时,则使用观察者模式。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。

    码缘
  • spring框架(3)— spring集合类的注入

    Mister24
  • spring框架(3)— spring集合类的注入

    Mister24
  • if __name__ == '__main__': 到底是个啥?

    Crossin先生
  • 第75节:Java中的JSP,EL和JSTL

    请求转发请求1次,只能对当前项目跳转,重定向请求2次.重定向是无法传递的,重定向对跳转范围没有限制.

    达达前端
  • TCL实业控股股份有限公司社招Java工程师(二)

    链接:https://www.nowcoder.com/discuss/334052?type=2&order=3&pos=34&page=1

    牛客网
  • 使用idea根据数据库表生成java model类,基于hibernate

    很多场景下我们需要根据已有的数据库表,生成对应的java bean,而且还希望生成的java类格式正确、命名规范。

    天涯泪小武
  • Enterprise Library深入解析与灵活应用(6):自己动手创建迷你版AOP框架

    基于Enterprise Library PIAB的AOP框架已经在公司项目开发中得到广泛的使用,但是最近同事维护一个老的项目,使用到了Enterprise L...

    蒋金楠

扫码关注云+社区

领取腾讯云代金券