1、工厂模式:
创建对象实例就如同工厂生产产品一样,根据不同的要求生成不同的产品。具体要哪种产品交给调用者,调用者只需传递需求,不需关注产品的具体实现。
2、实现原理:
各种对象实现同一接口,提供一个工厂根据不同的类型调用具体的实现类创建对象并返回。注意返回的类型是接口类型。利用了多态特性。当使用产品的时候还是执行具体的产品的功能。
3、实现代码
// 机器接口(工厂的产品共性抽取的接口)
public interface Machine {
void move();
}
// 具体实现类
public class Car implements Machine {
@Override
public void move() {
System.out.println("地上奔驰");
}
}
// 具体实现类
public class Ship implements Machine {
@Override
public void move() {
System.out.println("水上游动");
}
}
// 具体实现类
public class Bike implements Machine {
@Override
public void move() {
System.out.println("骑着走吧");
}
}
// 提供一个工厂类,根据不同的产品类型创建出具体的产品
public class MachineFatory {
public static Machine buildMachine(String machineType){
switch(machineType){
case "CAR":
return new Car();
case "SHIP":
return new Ship();
default:
return new Bike();
}
}
}
4、测试代码
public static void main(String[] args) {
MachineFatory.buildMachine("CAR").move();
}
5、测试结果
测试结果:
Connected to the target VM, address: '127.0.0.1:57084', transport: 'socket'
地上奔驰