<?php
/**
* 单例模式
* 工厂模式
* 注册树模式
*/
class Site
{
//属性
public $siteName;
//受保护的静态实例
protected static $instance = null;
//禁用构造器 防止外部new
private function __construct($siteName)
{
$this->siteName = $siteName;
}
//获取本类的唯一实例
public static function getInstance($siteName='PHP World')
{
if(!self::$instance instanceof self){
self::$instance = new self($siteName);
}
return self::$instance;
}
}
//用工厂模式来生成本类的单一实例
class Factory
{
//创建指定类的实例
public static function create()
{
return Site::getInstance('liuyuanshan.top');
}
}
//对象注册树
/**
* Class Register
* 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());
//从树上取一个对象下来
$obj = Register::get('site');
//查看一下这个对象
echo "<pre>";
var_dump($obj);
echo "</pre>";
//查看属性
var_dump($obj->siteName);
ThinkPHP 5.1---PHP经典设计模式
最新推荐文章于 2024-07-07 05:15:01 发布