工厂方法模式(Factory Method)
1、基本构成
有四个角色:一个抽象产品类,多个具体产品实现类,一个抽象工厂类,多个具体工厂实现类。
2、特点
不再是由一个工厂类去实例化具体的产品,而是由抽象工厂的子类去实例化产品。
FactoryMethod是一个类的实例化延迟到其子类。
3、主要作用
工厂方法模式主要是为创建对象过渡的接口,以便将创建的对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。
工厂方法模式实例代码如下:
第一步:创建抽象产品类
package factoryMethod;
/**
* 抽象产品接口:轿车
*/
public interface Car {
public void driver();
}
第二步:创建具体产品实现类
package factoryMethod;
/**
* 具体产品实现类:奥迪
*/
public class Audi implements Car {
@Override
public void driver() {
System.out.println("开奥迪去旅游!");
}
}
package factoryMethod;
/**
* 具体产品实现类:宝马
*/
public class Bmw implements Car {
@Override
public void driver() {
System.out.println("开宝马接小孩!");
}
}
第三步:创建抽象工厂类
package factoryMethod;
/**
* 抽象工厂接口:司机
*/
public interface Driver {
public Car driverCar();
}
第四步:具体工厂实现类
package factoryMethod;
/**
* 具体工厂实现类:奥迪车司机
*/
public class AudiDriver implements Driver {
@Override
public Car driverCar() {
return new Audi();
}
}
package factoryMethod;
/**
* 具体工厂实现类:宝马车司机
*/
public class BmwDriver implements Driver {
@Override
public Car driverCar() {
return new Bmw();
}
}
第五步:创建测试类
package factoryMethod;
/**
* 测试类 :老板
*/
public class Boss {
public static void main(String[]args){
Driver audiDriver = new AudiDriver();
Car audi = audiDriver.driverCar();
audi.driver();
Driver bmwDriver = new BmwDriver();
Car bmw = bmwDriver.driverCar();
bmw.driver();
}
}