日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

注册树模式

發布時間:2024/9/30 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 注册树模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 概念
    把對象實例注冊到全局的注冊樹上(全局靜態變量),需要的時候從對象樹上采摘。

  • 使用原因:
     單例模式解決的是如何在整個項目中創建唯一對象實例的問題,工廠模式解決的是如何不通過new建立實例對象的方法。 那么注冊樹模式想解決什么問題呢? 在考慮這個問題前,我們還是有必要考慮下前兩種模式目前面臨的局限。
     首先,單例模式創建唯一對象的過程本身還有一種判斷,即判斷對象是否存在。存在則返回對象,不存在則創建對象并返回。 每次創建實例對象都要存在這么一層判斷。
     工廠模式更多考慮的是擴展維護的問題。 總的來說,單例模式和工廠模式可以產生更加合理的對象。怎么方便調用這些對象呢?而且在項目內如此建立的對象好像散兵游勇一樣,不便統籌管理安排啊。因 而,注冊樹模式應運而生。不管你是通過單例模式還是工廠模式還是二者結合生成的對象,都統統給我“插到”注冊樹上。我用某個對象的時候,直接從注冊樹上取 一下就好。這和我們使用全局變量一樣的方便實用。 而且注冊樹模式還為其他模式提供了一種非常好的想法。

  • 實現方法

<?php//將對象實例注冊到全局的一個對象樹里面 class Register {//用于存儲變量public static $objects;/*** 將對象掛載到樹上* @param $key* @param $obj*/public static function set($key,$object){self::$objects[$key] = $object;}//需要的 時候直接從對象樹種采摘下來使用public static function get($key){if (!isset(self::$objects[$key])){self::$objects[$key] = new $key;}return self::$objects[$key];}//注銷public static function _unset($key){unset(self::$objects[$key]);} }
  • 調用示例
// $b = new \B(); // // \Register::set('B',$b);$obj = \Register::get("B");dump($obj->abc());

總結

以上是生活随笔為你收集整理的注册树模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。