文章出處
文章列表
示例代碼詳見https://github.com/52fhy/design_patterns
簡單工廠
簡單工廠模式的工廠類一般是使用靜態方法,通過接收的參數的不同來返回不同的對象實例。
也就是使用的時候通過傳參來確定生成不同的對象。
簡單工廠UML圖:
簡單工廠需要有3個角色:
- Product接口類:用于定義產品規范;
- 具體的產品實現,例如ConcreateProductA、ConcreateProductB;
- 簡單工廠類SimpleFactory:用于生成具體的產品。
使用的時候通過傳參數給簡單工廠類,可以生成想要的產品。
代碼:
ICar.php:定義產品規范:
namespace Yjc\SimpleFactory;
interface ICar
{
public function driver();
}
具體產品實現:
namespace Yjc\SimpleFactory;
class Benz implements ICar
{
public function driver()
{
echo 'benz driver.';
}
}
class Bmw implements ICar
{
public function driver()
{
echo 'bmw driver.';
}
}
簡單工廠類SimpleFactory:
namespace Yjc\SimpleFactory;
class SimpleFactory
{
public static function makeCar($type){
switch ($type){
case 'benz':
return new Benz();
break;
case 'bmw':
return new Bmw();
break;
default:
throw new \Exception('not support type!');
break;
}
}
}
參數代碼:
$car = SimpleFactory::makeCar('benz');
$car->driver();
簡單工廠的優點/缺點:
優點:簡單工廠模式能夠根據外界給定的信息,決定究竟應該創建哪個具體類的對象。明確區分了各自的職責和權力,有利于整個軟件體系結構的優化。
缺點:很明顯工廠類集中了所有實例的創建邏輯,容易違反GRASPR的高內聚的責任分配原則。
參考:
1、設計模式:簡單工廠、工廠方法、抽象工廠之小結與區別 - superbeck的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/superbeck/article/details/4446177
2、簡單工廠、工廠方法、抽象工廠、策略模式、策略與工廠的區別 - Danny Chen - 博客園
http://www.cnblogs.com/zhangchenliang/p/3700820.html
文章列表
全站熱搜