定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。
在简单工厂中,创建对象的是简单工厂类;而在工厂方法中,创建对象的是继承了父类工厂的子类。
类图

实现
1 2 3
| public interface Product {
}
|
1 2 3
| public class ConcreteProduct1 implements Product {
}
|
1 2 3
| public class ConcreteProduct2 implements Product {
}
|
1 2 3 4 5
| public abstract class Factory {
public abstract Product factoryMethod(); }
|
1 2 3 4 5 6 7 8
| public class ConcreteFactory1 extends Factory {
@Override public Product factoryMethod() { return new ConcreteProduct1(); }
}
|
1 2 3 4 5 6 7 8
| public class ConcreteFactory2 extends Factory {
@Override public Product factoryMethod() { return new ConcreteProduct2(); }
}
|
1 2 3 4 5 6 7 8
| public class Client {
public static void main(String[] args) { Factory factory = new ConcreteFactory1(); Product product = factory.factoryMethod(); }
}
|