简单工厂模式:单个工厂,需要修改工厂内的代码 工厂方法模式:多个工厂,无需修改工厂内的代码,只需要横向扩展工厂类
代码文件如下图
前提
public interface Car {
void name();
}
public class Ferrari implements Car {
@Override
public void name() {
System.err.println("法拉利");
}
}
public class Porsche implements Car {
@Override
public void name() {
System.err.println("保时捷");
}
}
工厂方法模式的写法,把车工厂从实现类class变成接口interface
/**
* 工厂方法模式
*/
public interface CarFactory {
Car getCar();
}
实现每个车的实现类
public class FerrariFactory implements CarFactory {
@Override
public Car getCar() {
return new Ferrari();
}
}
public class PorscheFactory implements CarFactory {
@Override
public Car getCar() {
return new Porsche();
}
}
最后由客户直接找到对应车工厂实现
public class Customer {
public static void main(String[] args) {
Car porsche = new PorscheFactory().getCar();
Car ferrari = new FerrariFactory().getCar();
porsche.name();
ferrari.name();
}
}
优点:满足开闭原则
缺点:代码量太大,难以管理
结构复杂度:hard
代码复杂度:hard
编程负责度:hard
管理复杂度:hard
根据设计模式:选择工厂设计模式
根据实际业务:简单工厂模式(这也是大部分业务的选择)
所以说,设计模式好但不一定实用