/**
* 工厂方法模式。
* @author Bright Lee
*/
public class FactoryMethodPattern {
public static void main(String[] args) {
Creator creator = null;
creator = new Creator001();
creator.create();
creator = new Creator002();
creator.create();
}
}
abstract class Creator {
/**
* 这就是一个工厂方法,由子类实现,用于返回具体的产品。
*/
public abstract Product factoryMethod();
public final void create() {
// 调用工厂方法:
Product product = factoryMethod();
System.out.println("创建的产品的名字是:" + product.getName());
}
}
class Creator001 extends Creator {
public Product factoryMethod() {
Product product = new Product001();
return product;
}
}
class Creator002 extends Creator {
public Product factoryMethod() {
Product product = new Product002();
return product;
}
}
abstract class Product {
private String name;
public Product(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Product001 extends Product {
public Product001() {
super("产品001");
}
}
class Product002 extends Product {
public Product002() {
super("产品002");
}
}
输出结果:
创建的产品的名字是:产品001
创建的产品的名字是:产品002