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

    实现单例的条件:三私一公

       三私:私有化构造方法:不让外部创建对象

        私有化克隆方法:不让外部克隆对象

        私有静态属性:保存已经产生的对象

       一公:公共静态方法:在类内部创建对象

    实例:

    <?php
    
        //单例模式:一个类只能创造一个对象
    
        class Single{
            //属性
            private $name;
            public static $counts = 0;
    
            //定义一个静态属性来保存对象
            private static $single;
            
            //私有化构造方法
            private function __construct($name){
                $this->name = $name;
                //计数
                self::$counts++;
            }
    
            //私有化克隆方法
            private function __clone(){
                //计数
                self::$counts++;
            }
    
            //静态方法,让类进入到类的内部进行实例化得到对象
            public static function getInstance($name){
                //判断对象是否已经存在,如果存在则直接返回原来对象,否则创造新对象
                if(self::$single){
                    //对象已经存在,返回原来对象
                }else{
                    //对象不存在
                    self::$single = new Single($name);
                }
    
                //返回对象
                return self::$single;
            }
        }
    
        //实例化
        //$single = new Single('林志炫');
    
        //访问类对象数量
        //echo Single::$counts;
    
        //得到对象
        $single = Single::getInstance('马云');
        var_dump($single);
    
        //访问类对象数量
        echo Single::$counts;
    
        //得到对象
        $single = Single::getInstance('马化腾');
        var_dump($single);
    
        //访问类对象数量
        echo Single::$counts;

    优点:

      只能创建一个对象,可节省内存资源

  • 相关阅读:
    dell N5010
    centos7 teamviewer
    E40笔记本无线网卡
    sqlite的bool字段
    System.data.sqlite安装
    关于AutoResetEvent 和ManualResetEvent
    实时刷新winform中的某一个控件上的文字
    C#中的静态构造函数
    apm的学习资料
    C# 版本和.NET 版本以及VS版本的对应关系
  • 原文地址:https://www.cnblogs.com/hf8051/p/4648314.html
Copyright © 2011-2022 走看看