正文  软件开发 > PHP编程技术 >

php设计模式 工厂模式和单例模式,php设计模式

php设计模式 工厂模式和单例模式,php设计模式一.单例模式//让该类在外界无法造对象//让外界可以造一个对象,做一个静态方法返回对象//在类里面通过让静态变量控制返回对象只能是一个。 单例...

php设计模式 工厂模式和单例模式,php设计模式

一.单例模式
//让该类在外界无法造对象
//让外界可以造一个对象,做一个静态方法返回对象
//在类里面通过让静态变量控制返回对象只能是一个。

单例模式的要点有三个:

为什么要使用PHP单例模式



class cat
{
public $name;
private function __construct()
{

}
static $temp;
static function new_ob()
{
if(empty(self::$temp)){
self::$temp = new cat();
}
return self::$temp;
}
function speak(){
return "喵喵喵";
}
}
//$mao = new cat();


//如果没有猫就造一个,然后等于新的xxx,如果有,直接等于。达到限制的目的。
//$mao;
//if (empty($mao)){
// $mao = new cat();
//}
// $xxx = $mao;

$mao = cat::new_ob();
$mao2 = cat::new_ob();
//给1猫改名字,2猫的名字输出为1猫改的名字。此为单例。
$mao->name = "py";








2.简单工厂模式
  • ①抽象基类:类中定义抽象一些方法,用以在子类中实现
  • ②继承自抽象基类的子类:实现基类中的抽象方法
  • ③工厂类:用以实例化所有相对应的子类

abstract class jsq
{
public $a;
public $b;

function yunsuan(){
}
}
//此为拓展
class jiafa extends jsq
{
function yunsuan()
{
//parent::yunsuan(); // TODO: Change the autogenerated stub
return $this ->a+$this->b;
}
}
class jianfa extends jsq
{
function yuansuan(){
return $this->a-$this->b;
}
}
class factory
{
static function create($x){
switch ($x){
case "+":
return new jiafa();
break;
case "-":
return new jianfa();
break;
}
}
}
//$j1 = new jiafa();
//$j1->a = 1;
//$j1->b = 2;
//$j1->yunsuan();

//尽量避免实例化对象,采用静态方法获取。
$jf = factory::create("+");
$jf->a = 1;
$jf->b = 2;
echo $jf->yunsuan();
 

http://www.bkjia.com/PHPjc/1229657.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1229657.htmlTechArticlephp设计模式 工厂模式和单例模式,php设计模式 一.单例模式 //让该类在外界无法造对象 //让外界可以造一个对象,做一个静态方法返回对象...