zoukankan      html  css  js  c++  java
  • php单例模式

    php单例模式



    //单例只允许一个类被实例化一次

    //php单例的实现
    //单例只允许一个类被实例化一次
    
    class single{
        protected static $ins = null;
    
        //方法前加final,则方法在继承时不能被修改和覆盖
        //防止继承时修改访问权限
        final protected function __construct(){
    
        }
    
    
        public static function getIns(){
            // if(self::$ins === null){
                self::$ins = new self();
            // }
            return self::$ins;
        }
    
        //防止被clone
        final protected function __clone(){}
    
        //这种方式不可行,返回的对象依然是一个新对象
        /*
        public function __clone(){
            return self::$getIns();
        }
        */
    
    }
    
    $a = single::getIns();
    $b = single::getIns();
    if($a === $b){
        echo 'yes';
    }else{
        echo 'no';
    }

    总结:

    1、父类的构造方法定义为protected,无法在外部被直接通过new实例化;

    2、使用关键字final后,子类继承后不能修改这个方法的访问属性,就可以禁止子类将构造方法公开。

    3、防止clone,可以禁止通过可能产生新的对象。


  • 相关阅读:
    题解:CF1494 F. Delete The Edges
    「CEOI2011」选做
    题解:「CEOI2017」Chase
    学习笔记:《具体数学》问题整理
    题解:「COCI2019」 Transport
    【做题记录】位运算
    线性DP
    虚树 virtual-tree
    三元环计数
    长链剖分
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9674977.html
Copyright © 2011-2022 走看看