PHP单例模式与工厂模式详解
一、单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的。
所有的单例模式至少拥有以下三种公共元素:
1.它们必须拥有一个构造函数,并且必须被标记为private
2.它们拥有一个保存类的实例的静态成员变量
3.它们拥有一个访问这个实例的公共的静态方法
单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。
单例模式实例
name=$n;
}
publicfunctiongetname(){//取变量$name的值
return$this->name;
}
}
$a=Single::getinstance();
$b=Single::getinstance();
$a->setname('helloworld');
$b->setname('goodmorning');
echo$a->getname();//goodmorning
echo$b->getname();//goodmorning
?>
二、工厂模式就是一种类,具有为您创建对象的某些方法,这样就可以使用工厂类创建对象,而不直接使用new。
这样如果想更改创建的对象类型,只需更改该工厂即可。
a=20; $ope->b=10; echo$ope->opera();
工厂模式实例
classFactory{//创建一个基本的工厂类
staticpublicfunctionfac($id){//创建一个返回对象实例的静态方法
if(1==$id)returnnewA();
elseif(2==$id)returnnewB();
elseif(3==$id)returnnewC();
returnnewD();
}
}
interfaceFetchName{//创建一个接口
publicfunctiongetname();//
}
classAimplementsFetchName{
private$name="AAAAA";
publicfunctiongetname(){
return$this->name;
}
}
classCimplementsFetchName{
private$name="CCCCC";
publicfunctiongetname(){
return$this->name;
}
}
classBimplementsFetchName{
private$name="BBBBB";
publicfunctiongetname(){
return$this->name;
}
}
classDimplementsFetchName{
private$name="DDDDD";
publicfunctiongetname(){
return$this->name;
}
}
$o=Factory::fac(6);//调用工厂类中的方法
if($oinstanceofFetchName){
echo$o->getname();//DDDDD
}
$p=Factory::fac(3);
echo$p->getname();//CCCCC
?>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。