zoukankan      html  css  js  c++  java
  • 设计模式之单例模式--instance

    <?php
    header('Content-Type:text/html;charest=utf-8');
    /**
    * 设计模式之单例模式
    * $_instance必须声明为静态的私有变量
    * 构造函数和析构函数必须声明为私有,防止外部程序new
    * 类从而失去单例模式的意义
    * getInstance()方法必须设置为公有的,必须调用此方法
    * 以返回实例的一个引用
    * ::操作符只能访问静态变量和静态函数
    * new对象都会消耗内存
    * 使用场景:最常用的地方是数据库连接。 
    * 使用单例模式生成一个对象后,
    * 该对象可以被其它众多对象所使用。 
    */
    class Danli {
     
        //保存类实例的静态成员变量
        private static $_instance;
        
        //private标记的构造方法
        private function __construct(){
            echo 'This is a Constructed method;';
        }
         
        //创建__clone方法防止对象被复制克隆
        public function __clone(){
            trigger_error('Clone is not allow!',E_USER_ERROR);
        }
         
        //单例方法,用于访问实例的公共的静态方法
        public static function getInstance(){
            if(!(self::$_instance instanceof self)){
                self::$_instance = new self;
            }
            return self::$_instance;
        }
         
        public function test(){
            echo '调用方法成功';
        }
     
    }
     
    //用new实例化private标记构造函数的类会报错
    //$danli = new Danli();
    //正确方法,用双冒号::操作符访问静态方法获取实例
    $danli = Danli::getInstance();
    $danli->test();    //This is a Constructed method;调用方法成功
     
    //复制(克隆)对象将导致一个 E_USER_ERROR
    $danli_clone = clone $danli;        //Fatal error: Clone is not allow! in D:wampwwwstudyabstract_classinstance.php on line 28
  • 相关阅读:
    设置共享文件夹大小
    About IConfigurationSectionHandler Interface
    zoj 1050
    SQL Server 数据库优化经验总结
    一、页面输出缓存
    [转]深入解读 ADO.NET 2.0 的十大最新特性
    ASP.NET 缓存学习
    [转]写给ASP.NET程序员:网站中的安全问题
    [转] ASP.NET 性能提升秘诀之管道与进程优化
    实战 SQL Server 2005 镜像配置
  • 原文地址:https://www.cnblogs.com/yhdsir/p/4649001.html
Copyright © 2011-2022 走看看