php 注册树,php常用设计模式(单例,工厂,注册树模式)
單例模式
實例
/醫院
*?單例模式
*/
class?Single
{
private?static?$instance?=?null;
//?不允許實例化
private?function?__construct()?{?}
//?不允許克隆
private?function?__clone()?{?}
//?獲取對象
public?static?function?getInstance()
{
if?(self::$instance?==?null)?{
self::$instance?=?new?self();
}
return?self::$instance;
}
//?從1加到100
public?function?total()?{
$s?=?0;
for?($i?=?1;?$i?<=?100;?$i++)?{
$s?=?$s?+?$i;
}
echo?$s;
}
}
$obj1?=?Single::getInstance();
var_dump($obj1);??//?object(Single)#1?(0)?{?}
$obj2?=?Single::getInstance();
var_dump($obj2);?//?object(Single)#1?(0)?{?}
echo?'
';
$obj1->total();
//?單例模式總結
//?1.?創建一個null的靜態實例
//?2.?不允許實例化,不允許克隆
//?3.?創建一個靜態方法判斷并獲取返回對象
運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
簡單工廠模式
實例
/醫院
*??簡單工廠模式
*/
class?ProductFactory
{
public?static?function?create($type)
{
switch?($type)?{
case?'A':
return?new?ProductA();
break;
case?'B':
return?new?ProductB();
break;
}
}
}
class?ProductA?{
public?function?__construct()
{
echo?'this?is?productA';
}
}
class?ProductB?{
public?function?__construct()
{
echo?'this?is?productB';
}
}
ProductFactory::create('A');??//?this?is?productA
echo?'
';
ProductFactory::create('B');?//?this?is?productB
//?總結:
//工廠模式與單例模式只產生單一實例不同,工廠模式用于創建多種類型的多個實例對象
運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
注冊樹模式 / 對象池模式
實例
/醫院
*??注冊樹模式?/?對象池模式
*/
class?Demo1
{
public?function?show()
{
echo?'this?is?demo1';
}
}
class?Demo2
{
public?function?show()
{
echo?'this?is?demo2';
}
}
class?Demo3
{
public?function?show()
{
echo?'this?is?demo3';
}
}
class?Tree
{
private?static?$obj?=?[];
//?將對象掛載到注冊樹上
public?static?function?set($key,?$val)
{
self::$obj[$key]?=?$val;
}
//?將對象從注冊樹上取出來
public?static?function?get($key)
{
return?self::$obj[$key];
}
//?將對象從注冊樹上刪除
public?static?function?del($index)
{
unset(self::$obj[$index]);
}
}
Tree::set('demo1',new?Demo1());
Tree::set('demo2',new?Demo2());
Tree::set('demo3',new?Demo3());
echo?'
';
$obj1?=?Tree::get('demo1');
$obj1->show();?//?this?is?demo1
echo?'
';
$obj2?=?Tree::get('demo2');
$obj2->show();?//?this?is?demo2
echo?'
';
$obj3?=?Tree::get('demo3');
$obj3->show();?//?this?is?demo3
//?總結:??注冊樹模式就是直接用數組來存儲對象
運行實例 ?
點擊 "運行實例" 按鈕查看在線實例
總結
以上是生活随笔為你收集整理的php 注册树,php常用设计模式(单例,工厂,注册树模式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: exc读入到matlab,matlab外
- 下一篇: homestead开发php,介绍Thi