php设计模式笔记 单例 + 注册树

单例模式

<?php
/**
 * Single.php
 * Created on 2020/8/5 7:56 下午
 * Created by chenzhuo
 * description :
 */
class Single
{
    static public $instance = null;

    private function __construct()
    {

        echo "new-class </br>";
    }


    public static function getInstance() {
        if(!self::$instance){
            self::$instance = new self();
        }
        return self::$instance;
    }



    public function getCalm() {

        return "calm";
    }

}

调用

        $calm = \Single::getInstance()->getCalm();
//        \Single::getInstance()->getCalm();
//        \Single::getInstance()->getCalm();
//        \Single::getInstance()->getCalm();
//        \Single::getInstance()->getCalm();
//        \Single::getInstance()->getCalm();

        echo $calm;

注册树模式

1、注册树模式通过将注册实例注册到一棵全局的对象树上
2、需要的时候从对象树上采摘下来使用

<?php
/**
 * ClamRegister.php
 * Created on 2020/8/5 8:12 下午
 * Created by chenzhuo
 * description :
 */
class ClamRegister
{
    /**
     * 注册树池子
     * @var null
     */
    protected static $objects = null;

    /**
     * Notes:将对象挂到对象树上
     * @param $key
     * @param $object
     * User: chenzhuo
     * Date: 2020/8/5 8:15 下午
     */
    public static function set($key, $object) {
        self::$objects[$key] = $object;
    }

    /**
     * Notes: 从树上获取对象, 如果没有 注册
     * @param $key
     * @return mixed
     * User: chenzhuo
     * Date: 2020/8/5 8:16 下午
     */
    public static function get($key) {
        if(!isset(self::$objects[$key])){
            self::$objects[$key] = new $key;
        }
        return self::$objects[$key];
    }

    /**
     * Notes: 注销
     * @param $key
     * User: chenzhuo
     * Date: 2020/8/5 8:18 下午
     */
    public static function _unset($key)
    {
        unset(self::$objects[$key]);
    }
}

调用

<?php
/**
 * A.php
 * Created on 2020/8/5 8:21 下午
 * Created by chenzhuo
 * description :
 */
class A {
    public function calm() {
        return "calmA";
    }
}
   $calm = \ClamRegister::get("A")->calm();
   var_dump($calm);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值