您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
设计模式-工厂方法
发布时间:2017-11-30 09:19:45编辑:雪饮阅读()
<?php
//db接口
interface db{
function conn();
}
class dbmysql implements db{
public function conn(){
echo 'mysql实例化完成';
}
}
class dbsqlite implements db{
public function conn(){
echo 'sqlite实例化完成';
}
}
//db工厂接口
interface Factory{
function createDB();
}
class mysqlFactory implements Factory{
public function createDB(){
return new dbmysql();
}
}
class sqliteFactory implements Factory{
public function createDB(){
return new dbsqlite();
}
}
//调用者
$fact=new mysqlFactory();
$db=$fact->createDB();
$db->conn();
echo "<br/>";
$fact=new sqliteFactory();
$db=$fact->createDB();
$db->conn();
/*
相对于上个简单工厂来说,工厂方法优势并不是很明显。
在简单工厂中:
若要新增一个数据库类的功能,则需要被调用者在服务端为db接口实现一个新的类,并修改db工厂中的if else流程控制语句,最后告诉调用者要传入的参数值。
在工厂方法中:
若要新增一个数据库类的功能,则需要被调用者在服务端为db接口实现一个新的类,并为工厂接口实例化一个对应的新的数据库的工厂类。最后告诉调用者新的工厂类的名称。
两个模式其实从业务流程方面来说复杂度差不多,但工厂方法更符合<面向对象软件构造>的开闭原则,即对扩展开放,对修改关闭。而在简单工厂中,若要新增一个数据库类的功能则是在修改而不是单纯的新增。
*/
?>
关键字词:设计模式,工厂方法
上一篇:设计模式-单例模式
下一篇:设计模式-观察者模式做风格切换