1.工厂模式:实现创建者和调用者分离。
2.分类
1)简单工厂模式(静态工厂模式):用来生产同一等级结构中的任意产品。(对于新增的产品,需要修改已有的代码)
2)工厂方法模式:用来生产同一等级结构中的的固定产品。(支持增加任意产品)
3)抽象工厂模式:用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)
3.面向对象设计的基本原则
1)OCP(开放原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。
2)DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程。
3)LoD(迪米特法则,Law of Demeter):只与你直接的朋友通讯,而避免和陌生人通讯。
4.核心本质
1)实例化对象,用工厂方法代替new操作。
2)将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
5.简单工厂模式实例
public class CarFactory {
public static Car createCar(String type) {
if ("audi".equals(type)) {
return new Audi();
}
if ("byd".equals(type)) {
return new Byd();
}
return null;
}
}
public class Client01 {
public static void main(String[] args) {
// 在没有工厂模式的情况下,Client01要依赖接口,还有所有实现类
Car car1 = new Audi();
Car car2 = new Byd();
car1.run();
car2.run();
// 使用工厂模式,Client01只要依赖CarFactory就行,方便调用者调用,更加容易扩展
Car car3 = CarFactory.createCar("audi");
Car car4 = CarFactory.createCar("byd");
car3.run();
car4.run();
}
}