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,可以禁止通过可能产生新的对象。


  • 相关阅读:
    logback学习二
    logback学习
    弱类型、强类型、动态类型、静态类型语言的区别
    BlockingQueue
    ExecutorService
    Future学习
    SetTimeout()多次运行函数后越来越快的问题
    LISTAGG函数
    Oracle字段
    使用powerdesigner进行数据库设计
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9674977.html
Copyright © 2011-2022 走看看