1. 程式人生 > >ThinkPHP筆記5——PHP常用設計模式(單例、工廠、註冊樹)

ThinkPHP筆記5——PHP常用設計模式(單例、工廠、註冊樹)

<?php
//單例模式
class Site{
//屬性
public $siteName;
//本類的靜態例項
private static $instance = null;
//禁用構造方法
private function __construct($siteName){
$this->siteName=$siteName;
}
//克隆方法私有化
private function __clone(){}
//生成當前類的唯一例項
public static function getInstance($siteName='PHP中文網'){
if(!self::$instance instanceof self
){ self::$instance=new self($siteName); } return self::$instance; } } //用工廠模式來生成本類的單一例項 class Factory{ //建立指定類的例項 public static function create($siteName){ return Site::getInstance($siteName); } } //物件註冊樹 /** * 1.註冊:set(),把物件掛在樹上 * 2.獲取:get(),把物件取下來 * 3.登出:_unset():把物件吃掉 */ 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]); } } //將Site類的例項上樹,放入物件池
Register::set('site',Factory::create('www.php.cn')); //從樹上取下一個物件下來 $obj=Register::get('site'); var_dump($obj);