请各位指点下疑惑,工厂方法到底解决了什么问题,为什么比简单工厂好
一直以来都有一个困惑,简单工厂模式升级到工厂方法模式之后,核心问题解决了吗
class TransportFctory {
public function makeTransport($type) {
switch ($type){
case "ship":
$transport = new ShipTransport();
break;
case "car":
$transport = new CarTransport();
break;
default:
throw NotSupprotedTransportException();
}
}
}
class ShipTransport extend Transport{
public function transport(){
//
}
}
class CarTransport extend Transport{
public function transport(){
//
}
}
这种在调用的时候每新增一种运输方式的确会改动factory里的代码,但是如果换乘工厂方法模式
class Factory {
public funtion makeTransport(){
//
}
}
calss ShipFactory extends Factory {
public funtion makeTransport(){
return new ShipTransport();
}
}
calss CarFactory extends Factory {
public funtion makeTransport(){
return new CarTransport();
}
}
使用了工厂方法模式之后,如果还是想客户端控制不同的type,那么是不是还是需要有一个地方进行type值的判断,然后返回不同的factory, 如果是的话,我感觉并没有比简单工厂更好吧。
一点疑惑,请各位指教。
推荐文章: