200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > php 注册树 php常用设计模式(单例 工厂 注册树模式)

php 注册树 php常用设计模式(单例 工厂 注册树模式)

时间:2022-12-06 14:20:52

相关推荐

php 注册树 php常用设计模式(单例 工厂 注册树模式)

单例模式

实例

/医院

*单例模式

*/

classSingle

{

privatestatic$instance=null;

//不允许实例化

privatefunction__construct(){}

//不允许克隆

privatefunction__clone(){}

//获取对象

publicstaticfunctiongetInstance()

{

if(self::$instance==null){

self::$instance=newself();

}

returnself::$instance;

}

//从1加到100

publicfunctiontotal(){

$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.创建一个静态方法判断并获取返回对象

运行实例 »

点击 "运行实例" 按钮查看在线实例

简单工厂模式

实例

/医院

*简单工厂模式

*/

classProductFactory

{

publicstaticfunctioncreate($type)

{

switch($type){

case'A':

returnnewProductA();

break;

case'B':

returnnewProductB();

break;

}

}

}

classProductA{

publicfunction__construct()

{

echo'thisisproductA';

}

}

classProductB{

publicfunction__construct()

{

echo'thisisproductB';

}

}

ProductFactory::create('A');//thisisproductA

echo'

';

ProductFactory::create('B');//thisisproductB

//总结:

//工厂模式与单例模式只产生单一实例不同,工厂模式用于创建多种类型的多个实例对象

运行实例 »

点击 "运行实例" 按钮查看在线实例

注册树模式 / 对象池模式

实例

/医院

*注册树模式/对象池模式

*/

classDemo1

{

publicfunctionshow()

{

echo'thisisdemo1';

}

}

classDemo2

{

publicfunctionshow()

{

echo'thisisdemo2';

}

}

classDemo3

{

publicfunctionshow()

{

echo'thisisdemo3';

}

}

classTree

{

privatestatic$obj=[];

//将对象挂载到注册树上

publicstaticfunctionset($key,$val)

{

self::$obj[$key]=$val;

}

//将对象从注册树上取出来

publicstaticfunctionget($key)

{

returnself::$obj[$key];

}

//将对象从注册树上删除

publicstaticfunctiondel($index)

{

unset(self::$obj[$index]);

}

}

Tree::set('demo1',newDemo1());

Tree::set('demo2',newDemo2());

Tree::set('demo3',newDemo3());

echo'

';

$obj1=Tree::get('demo1');

$obj1->show();//thisisdemo1

echo'

';

$obj2=Tree::get('demo2');

$obj2->show();//thisisdemo2

echo'

';

$obj3=Tree::get('demo3');

$obj3->show();//thisisdemo3

//总结:注册树模式就是直接用数组来存储对象

运行实例 »

点击 "运行实例" 按钮查看在线实例

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。