要点
- 简单工厂模式又叫静态工厂模式,就是工厂类一般使用静态方法,通过接受的参数的不同,来返回不同的对象实例。
- 对于增加新产品无能为力,不修改代码是无法进行扩展的
public interface Car {
void run();
}
public class Bwd implements Car {
@Override
public void run() {
System.out.println("比亚迪在跑");
}
}
public class Audi implements Car {
@Override
public void run() {
System.out.println("奥迪在跑");
}
}
/**
* 没有工厂模式的情况
*/
public class Client1 {
public static void main(String[] args) {
Car bwd = new Bwd();
Car audi = new Audi();
bwd.run();
audi.run();
}
}
可以看出client端(调用端),是同需要知道接口、具体实现类,对于调用方来说比较复杂。
/**
* 增加工厂类
*/
public class CarFactory {
public static Car createCar (String type){
if ("bwd".equals(type)){
return new Bwd();
} else if ("audi".equals(type)){
return new Audi();
} else {
return null;
}
}
}
/**
* 简单工厂模式下
*/
public class Client2 {
public static void main(String[] args) {
Car bwd = CarFactory.createCar("bwd");
Car audi = CarFactory.createCar("audi");
bwd.run();
audi.run();
}
}
对于调用放来说,只需要知道接口、工厂类即可。通过传入不同type,获取不同Car实例。