~~~
// 簡單工廠模式只適用于業務簡單的情況下或者具體產品很少增加的情況。而對于復雜的業務環境可能不太適應了。
// 工廠方法模式適合于處理多種復雜的業務場景
//
// 轎車接口類
interface CommCar {
//接口類方法
function run();
}
class BMWCar implements CommCar {
public function run() {
echo 'bmw run!<br/>';
}
}
class AuDiCar implements CommCar {
public function run() {
echo 'audi run!<br/>';
}
}
// 工廠方法模式
interface CreateCar {
//工廠類接口
function create();
}
/**
* bmw car factoyr
*/
class BmwFactory implements CreateCar {
public function create() {
return new BMWCar();
}
}
/**
* audi car factory
*/
class AuDiFactory implements CreateCar {
public function create() {
return new AuDiCar();
}
}
~~~
工廠方法模式和抽象工廠模式有點類似,但也有不同。
工廠方法針對每一種產品提供一個工廠類,通過不同的工廠實例來創建不同的產品實例,在同一等級結構中,支持增加任意產品。
抽象工廠是應對產品族概念的,比如說,每個汽車公司可能要同時生產轎車,貨車,客車,那么每一個工廠都要有創建轎車,貨車和客車的方法。應對產品族概念而生,增加新的產品線很容易,但是無法增加新的產品。
* * * * *
http://laravelacademy.org/post/2506.html