當你有一組全局對象被全局訪問時可能就需要用到注冊模式 (registry),它提供了在程序中有條理的存放並管理對象 (object)一種解決方案。一個“注冊模式”應該提供get() 和 set()方法來存儲和取得對象。
注冊模式通過單一的全局的對象來獲取對其它對象的引用 實例:
<?php /** * PHP設計模式之注冊模式實例 * */ class Registry { protected static $objects; //用於存放對象的數組 /** * 將對象放到對象數組上 * @param string $alias 別名 * @param object $object 對象 */ static function set($alias, $object) { self::$objects[$alias] = $object; } /** * 將對象從數組上刪除 * @param string $alias 別名 */ static function _unset($alias) { unset(self::$objects[$alias]); } /** * 通過別名獲取對象 * @param string $alias 別名 */ static function get($alias) { if (array_key_exists($alias, self::$objects)) { return self::$objects[$alias]; } } } class MyObject { public function test(){ return 'ok'; } } //結合工廠模式 class MyFactory { public static function factory(){ //返回對象的實例 $myObject = new MyObject(); Registry::set("myObject", $myObject); } } //調用工廠 MyFactory::factory(); //使用 echo Registry::get("myObject")->test(); Registry::_unset("myObject"); ?>
好了,PHP的三種基礎模式已經介紹完了,隨後博主會繼續學習分享PHP的其他設計模式,謝謝!