跳到主要内容

设计模式之工厂方法模式

工厂方法模式定义

工厂方法模式(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