php教程:php设计模式介绍之工厂模式
下面是工厂的另一种变化,你静态地调用了一个工厂类:
class Product {
function getList() {
$db =& DbConnectionBroker::getConnection();
//...
}
}
class DbConnectionBroker {
function &getConnection() {
return new MysqlConnection(DB_USER, DB_PW, DB_NAME);
}
}
这里DbConnectionBroker::getConnection()产生的效果和前面的一样 ,但这样却很有好处: 我们不必在每个需要连接数据库的类中加入调用new MysqlConnection(DB_USER , DB_PW, DB_NAME)的方法。
当然另一种变化就是引用一个外部工厂对象的资源,和这个对象定义了数据库连接的参数:
class Product {
var $_db_maker;
function setDbFactory(&$connection_factory) {
$this->_db_maker =& $connection_factory;
}
function getList() {
$db =& $this->_db_maker->getConnection();
//...
}
}
最后,一个工厂可以用一个函数合理的组织,然后实现:
function &make_db_conn() {
return new MysqlConnection(DB_USER, DB_PW, DB_NAME);
}
class Product {
function getList() {
$bar =& make_db_conn();
//...
}
}
下面是一个工厂的理想化执行的 UML 类图:




文章评论
共有 0 位网友发表了评论 查看完整内容