返回 首页

php两种简单的设计模式:工厂模式和单例模式


什么是设计模式:

简单的说,设计模式就是解决某个问题的一般性代码的经验性总结。

类比的说,它类似之前所学的算法:针对某种问题,使用特定的语法逻辑就可以完成该任务。(注意此处为类比)。

工厂模式:

所谓工厂模式,就是一个特定的类,它可以根据传递给她的类,二区生产出对应类的对象。

代码:

//设计一个工厂类: 这个工厂类有一个静态方法
// 通过该方法可以获得指定的类的对象

class A{};
class B{};

class GongChang{
static function GetObject($className){//静态方法
$obj=new $className();//这是可变类
return $obj;
}

}
$o1=GongChang::GetObject(“A”);
$o2=GongChang::GetObject(“B”);
$o3=GongChang::GetObject(“A”);
var_dump($o1);echo “<br/>”;
var_dump($o2);echo “<br/>”;
var_dump($o3);echo “<br/>”;

单例模式:

就是设计一个类,只可以创造出它的一个对象。

代码:

class Single{
//第一步:
private function __construct(){}//这个作用是限制不可以在class外不可以new出来一个对象
//第二步:
static private $instance = null;//private为防止外部恶意修改
//第三步:
static function GetObject(){
if(!isset(self::$instance)){//如果未创建过 则new一个。是null则为false
$obj=new self();//这里的self就是Sigle
self::$instance=$obj;
return self::$instance;
}else{//如果已经创建过,则就返回以前的对象
return self::$instance;
}

}
}
$ob1=Single::GetObject();
$ob2=Single::GetObject();
var_dump($ob1);echo “<br/>”;
var_dump($ob2);echo “<br/>”;

登录