本帖最后由 小鲁哥哥 于 2017-8-23 11:20 编辑
PHP中的设计模式
设计模式 今天为大家带来的是PHP中的设计模式,首先让我们了解一下什么是设计模式。 什么叫设计模式?
在面向对象编程领域,解决一些典型问题的典型做法的经验总结(代码模式); 使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
了解完了什么是设计模式后,接下来我就为大家分享两种常用的设计模式:工厂模式和单例模式。
工厂模式:需求: 请设计一个类,该类有一个方法,能够做到这种效果: 给该方法传入一个类名,则该方法就可以返回这个类的对象。 就像一个“塑料制品”工厂:给它一个某种产品的“模具”,就可以生产该模具对应的塑料产品。 [PHP] 纯文本查看 复制代码 <?php
/*传智播客济南校区*/
/*
*需求:
*请设计一个类,该类有一个方法,能够做到这种效果:
*给该方法传入一个类名,则该方法就可以返回这个类的对象
*/
class Factory{
//声明一个静态方法
static function GetObjectByClassName($class_name){
//实例化这个类
$obj = new $class_name();
//返回这个类对应的对象
return $obj;
}
}
class A{}
class B{}
class C{}
//实例化对象
$obj1 = Factory::GetObjectByClassName("A");
$obj2 = Factory::GetObjectByClassName("A");
$obj3 = Factory::GetObjectByClassName("B");
$obj4 = Factory::GetObjectByClassName("C");
$obj5 = Factory::GetObjectByClassName("B");
//将实例化后的对象打印出来
var_dump($obj1);
var_dump($obj2);
var_dump($obj3);
var_dump($obj4);
var_dump($obj5);
得到结果:
object(A)#1 (0) {} object(A)#2 (0) {} object(B)#3 (0) {} object(C)#4 (0) {} object(A)#5 (0) {}
通过结果我们可以看出来我们得到了想要的对应的对象,这就是一个工厂类
单例模式: “例”,就是实例,就是对象; 单例,就是一个实例,就是一个对象。 单例模式指的就是:一个类,只能实例化出一个对象来。 需求: 设计一个类,该类,最终只能从它那里,获得一个对象! [PHP] 纯文本查看 复制代码 <?php
/*传智播客济南校区*/
class Single{
//将构造方法私有化
private function __construct(){}
//提供一个公共的静态方法供外界调用以获得对象
static function GetSingle(){
//设定一个静态局部变量,以存储该唯一对象(单例)
static $obj;
//如果还没new过
if(!isset($obj)){
echo "进来了";
$obj = new self();
}
//否则直接返回new过的对象
return $obj;
}
}
//实例化对象
$d1 = Single::GetSingle();
$d2 = Single::GetSingle();
$d3 = Single::GetSingle();
//将实例化后的对象打印出来
var_dump($d1);
var_dump($d2);
var_dump($d3);
得到的结果为:
进来了 object(Single)#1 (0) {} object(Single)#1 (0) {} object(Single)#1 (0) {}
由结果我们可以看出来虽然我实例化很多个类,但是返回的对象只是第一次实例化后的对象,这就是单例模式。
今天的设计模式就讲解到这里,不知道大家对设计模式还有什么疑问那? 如果有疑问,欢迎来传智播客济南校区我们来一起探讨一下~~
|