zoukankan      html  css  js  c++  java
  • 【php设计模式】单例模式

    实现单例的三个关键点:

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

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

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

    4、构造方法前面使用 final 关键字防止被子类覆盖构造函数

    5、设置 __clone() 魔术方法防止克隆生成新的对象

      单例模式:

    <?php
    class Car{
        public static $_instance = null;
        private $name;
    
        //添加final关键字防止子类覆盖父类的构造函数
        final 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;
        }
    
        //防止对象被克隆
        final private function __clone()
        {
            
        }
    }
    
    
    $car = Car::getInstance("benchi");
    $car1 = Car::getInstance("baoma");
    
    
    if($car === $car1){
        echo "完成相同".PHP_EOL;
    }else{
        echo "我们不一样".PHP_EOL;
    }

      普通实例化类:

    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
  • 相关阅读:
    C#连接SQL Server测试
    2015结束,迎接2016
    notepad ++ 编辑 powershell profile 文件时的诡异问题
    安静的思考
    把生活过的像模像样已经很不容易
    查询SQL Server 版本信息
    一段SQL代码
    javascript面向对象编程的3种常见封装形式解析
    javascript中new操作符的原理
    关于javascript中this 指向的4种调用模式
  • 原文地址:https://www.cnblogs.com/itsuibi/p/10902451.html
Copyright © 2011-2022 走看看