工厂模式
实现了创建者和调用者的分离
详细分类:
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
面向对象设计的基本原则:
- OCP(开闭原则):一个软件的实体应当对扩展开放,对修改关闭。
- DIP(依赖倒转):要针对接口编程,不针对实现编程
- LOD(迪米特法则):只与你的直接朋友通信,避免与陌生人通信
核心本质:
- 实例化对象,用工厂方法代替new操作
- 将选择实现类,创建对象统一管理和控制,从而将调用者和实现者解耦
工厂模式:
- 简单工厂模式:用来生产同一等级结构中的任意产品(对于新增加的产品,需要修改已有代码)
- 工厂方法模式:用来生产同一等级结构中的固定产品(支持增加任意产品)
- 抽象工厂模式:用来生产不同产品族的全部产品(对于新的产品,无法增加,支持增加产品族)
简单工厂模式(也称为静态工厂模式,工厂类中使用静态方法,通过接收的参数的不同来返回不同的对象的实例,不能增加新的产品,不修改代码无法扩展)
public interface Car {
void run();
}
public class Audi implements Car {
@Override
public void run() {
System.out.println("Audi is running!");
}
}
public class BMW implements Car{
@Override
public void run() {
System.out.println("BMW is running!");
}
}
public class CarMaker {
public static Car makeCar(String carName){
if(carName.equals("Audi")){
return new Audi();
}else if(carName.equals("BMW")){
return new BMW();
}else{
return null;
}
}
}