设计模式之:三种工厂模式的对比SimpleFactoryPattern、FactoryMethodPattern、AbstractFactoryPattern
工厂模式对比: |
简单工厂 SimpleFactoryPattern |
工厂方法 FactoryMethodPattern |
抽象工厂 AbstractFactoryPattern |
工厂数量 |
一个工厂 |
多个工厂 |
多个工厂 |
工厂数量计算 |
1 |
工厂数=产品数 |
工厂数=产品系列数 |
单个工厂创建产品数 |
所有产品 |
一个产品 |
一个产品系列 |
创建产品的方式 |
工厂通过条件语句,决定生产哪种产品 |
创建不同的工厂,从而生产不同的产品 |
创建不同的工厂,从而生产不同的产品系列 |
扩展产品难易程度 |
需要修改工厂代码 |
不用修改工厂代码 |
不用修改工厂代码 |
扩展产品实现方式 |
增加产品类,修改工厂代码 |
增加产品类和工厂类 |
增加产品系列和工厂类 |
是否使用接口 |
否 |
是 |
是 |
理解的难易程度 |
容易 |
一般 |
较难 |
是否实现解耦 |
是 |
是 |
是 |
是否符合依赖倒置原则 |
否 |
是 |
是 |
是否符合开闭原则 |
否 |
是 |
是 |
是否符合里氏替换原则 |
产品符合,工厂不符合 |
是 |
是 |
是否符合迪米特法则 |
是 |
是 |
是 |
是否符合单一职责原则 |
否 |
是 |
是 |