028-86261949

当前位置:首页 > 技术交流 > PHP设计模式之注册树模式

PHP设计模式之注册树模式

2018/09/06 15:04 分类: 技术交流 浏览:1

  • 什么是注册树模式

注册树模式也叫注册模式或注册器模式,顾名思义,注册树就是把对象实例注册到一棵全局的对象树上,需要对象的时候时候就从树上取下来,就好比树上涨的果子,需要的时候就摘一个下来,只是这个对象树果子是摘不完的。

  • 为什么要使用注册注册树模式

不管你们前面用单例还是工厂建立的对象,都是一个个游兵散将,没有得到很好的管理,那如果用了注册树模式,就可以把创建出来的对象注册到全局树上,需要的时候取下来用,可以很好的管理创建的对象。

 

  • 注册树模式实现

<?php

//单例模式

class Person

{

    public $name;//姓名

    public $age;//年龄

 

    //>>3. 声明 一个私有的静态属性用来存储第2步创建的对象

    private static $obj = null;

 

 

    //>>1. 私有化构造方法

    private function __construct($name, $age)

    {

        //初始化属性

        $this->name=$name;

        $this->age=$age;

    }

 

    //>>2. 提供一个公共的静态方法用来创建实例

    public static function CreateObject($name, $age)

    {

 

 

        if (!isset(self::$obj)) {

            //创建对象赋值给静态属性$obj

            self::$obj = new Person($name, $age);

 

        }

 

        return self::$obj;

 

    }

 

    //>>4. 私有化克隆方法

    private function __clone()

    {

 

    }

 

}

//工厂模式

class PersonFactory{

    public static function factory($name,$age){

        return Person::CreateObject($name,$age);

    }

}

//注册树模式

class Register{

    protected static $objects;

    public static function set($alias,$object){

        self::$objects[$alias]=$object;

    }

    public static function get($alias){

        return self::$objects[$alias];

    }

    public static function _unset($alias){

        unset(self::$objects[$alias]);

    }

}

 

Register::set('person',PersonFactory::factory('itsource',18));

 

$object=Register::get('person');

 

var_dump($object);

  • 结果

 

#标签:源码时代,重庆PHP培训,PHP培训,重庆IT培训,源码时代重庆校区,IT培训,PHP,重庆PHP,设计模式,续注册树模式