设计模式之工厂方法模式
工厂方法模式定义
工厂方法模式(Factory Method Pattern)相比简单工厂模式,其改动在于遵守了开闭原则。简单工厂要想增加新的产品,必须修改工厂类。但工厂方法模式不需要,只需要建立新的工厂类即可。对于用户而言,知道工厂名即可获得相应的产品。工厂方法仍然可以从外部指定工厂。
工厂方法模式的实现
// 抽象工厂
public abstract class Factory {
// 生产方法
public abstract Product create();
}
// 抽象产品
public abstract class Product {
public abstract void something();
}
// 具体工厂
public class OneFactory extends Factory {
@Override
public Product create() {
return new OneProduct();
}
}
public class TwoFactory extends Factory {
@Override
public Product create() {
return new TwoProduct();
}
}
// 具体产品
public class OneProduct extends Product {
@Override
public void something() {
System.out.println("这是产品1");
}
}
public class TwoProduct extends Product {
@Override
public void something() {
System.out.println("这是产品2");
}
}
测试:
public class Main {
public static void main(String[] args) {
// 指定不同的工厂,便可以生产不同的产品
create(new OneFactory());
create(new TwoFactory());
}
public static void create(Factory factory){
Product product = factory.create();
product.something();
}
}
结果:
这是产品1
这是产品2