~~~
// 简单工厂模式只适用于业务简单的情况下或者具体产品很少增加的情况。而对于复杂的业务环境可能不太适应了。
// 工厂方法模式适合于处理多种复杂的业务场景
//
// 轿车接口类
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