核心本质:
实例化对象不使用new,用工厂方法代替
将选择实现类,创建对象统一管理和控制.从而将调用者和我们的实现类解耦
简单工厂模式:
优点:代码量较小,便于代码的实现,节省空间.
缺点:在一个工厂内完成其他对象的创建,想要增加生产对象的种类需要修改原有的代码,这样违背了开闭原则.
//简单工厂模式
//不满足开闭原则(增加一个产品需要修改代码)
public class CarFactory {
public static Car getCar(String car){
if(car.equals("五菱"))
return new WuLing();
else if(car.equals("特斯拉"))
return new Tesla();
else
return null;
}
}
工厂方法模式:
优点: 每个需要生产的对象有自己独立的工厂,他们一起实现一个总的工厂接口,这样,增加一个新的对象不需要修改原有的代码,满足了代码的开闭原则.
缺点代码量较大,浪费资源空间.:
public interface Car {
void name();
}
public interface CarFactory {
Car create();
}
public class Tesla implements Car {
public void name() {
System.out.println("特斯拉!");
}
}
public class TeslaFactory implements CarFactory {
@Override
public Car create() {
return new Tesla();
}
}
public class WuLing implements Car {
@Override
public void name() {
System.out.println("五菱宏光!");
}
}
public class WuLingFactory implements CarFactory{
@Override
public WuLing create() {
return new WuLing();
}
}