php设计模式(1) 工厂模式
工厂模式
工厂模式属于类创建型模式。
在工厂模式中,工厂父类负责定义 创建具体产品对象的公共接口,而工厂子类负责生产具体的产品对象。
优点
- 将创建具体对象的步骤简化了,你只需要告诉工厂你需要什么,其他的都由工厂直接搞定,你只负责使用即可。
- 如果你想添加一个新产品 只需要 修改/拓展 工厂类就可以了
代码实现
工厂类
class Factory
{
public static function getProduct($type)
{
$obj = null;
switch ($type) {
case "Dogs":
$obj = new Dog();
break;
case "Books":
$obj = new Book();
break;
case "Wine":
$obj = new Wine();
break;
default:
$obj = null;
break;
}
return $obj;
}
}
抽象产品
interface Goods
{
public function getList();
}
具体产品
class Book implements Goods
{
public function getList()
{
return [
0 => "语文书",
1 => "数学书",
2 => "英语书",
3 => "唐吉坷德",
4 => "尼尔斯骑鹅旅行记",
];
}
}
调用
$books = Factory::getProduct('Books');
var_dump($books->getList());
结果
array (size=5)
0 => string '语文书' (length=9)
1 => string '数学书' (length=9)
2 => string '英语书' (length=9)
3 => string '唐吉坷德' (length=12)
4 => string '尼尔斯骑鹅旅行记' (length=24)
网友评论