转载请注明作者和出处://www.greatytc.com/p/7f60dd5c2825
运行平台: Windows
php版本: php7.0
针对设计模式的学习,结合自己的情况,我针对自己做了几点安排
1.学习这玩意一靠天赋,二靠机缘,三靠多看例子,实在看不懂过段时间再来看,多看其他文章的例子,或者开源框架或者扩展包里的源码,找找看里面所用到的设计模式。
2.一定要多敲代码,要多敲代码,要多敲代码,要多敲代码
- 类名通常命名为:模块名称”+Factory,比如用户模块就用UserFactory
- 方法通常命名为 "get"+接口名称,“create”+接口名称,例如一个接口叫UserEbi,那么方法名称通常为,getUserEbi或者createUserEbi
代码
class Man{
public function getName(){
echo "my name is laowang";
}
}
class Women{
public function getName(){
echo "my name is xiaomei";
}
}
class PersonFactory{
public function createPerson($type){
if($type == 'man'){
$person = new Man();
}elseif($type == 'women'){
$person = new Women();
}
return $person;
}
}
$type = "man";
$person = new PersonFactory();
$name = $person->createPerson($type);
$name = $name->getName();
var_dump($name);
输出结果:简单工厂优缺点
- 帮助封装
简单工厂虽然简单,但是非常友好的帮助我们实现了组件的封装,然后让组件外部能真正面向接口编程。 - 解耦
通过简单工厂,实现了客户端和具体实现类的解耦。
如果上面的例子,客户端根本不知道是由谁来实现,也不知道具体如何实现,客户端只是通过工厂获取它需 要的接口对象。 - 可能增加客户端的复杂度
如果通过客户端的参数来选择具体实现的类,那么就必须要客户端理解每个参数的含义和功能,这会增加客户端的使用难度,也暴露了内部实现。