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;

 

优点:

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

posted @ 2015-07-15 14:52  goodup  阅读(309)  评论(0编辑  收藏  举报

如有不对之处,欢迎指出,一起成长