描述:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法是一个类的实例化延迟到其子类。
工厂模式中出现的角色:
- 抽象产品类Product:负责制定产品的共性,实现对抽象的定义;
- 具体产品类ConcreteProduct:定义具体的产品;
- 抽象创建类Creator:抽象工厂;
- 实现工厂ConcreteCreator:具体的工厂,具体的创建产品;
工厂方法Java模板:
public abstract class Product{//抽象产品类
//产品类的公共方法
public void method1() {
//业务逻辑处理
}
//抽象方法
public abstract void method2() ;
}
public class ConcreteProduct1 extends Product{//具体产品类
public void method2() {
//业务逻辑处理
}
}
public class ConcreteProduct2 extends Product{//具体产品类
public void method2() {
//业务逻辑处理
}
}
public abstract class Creator{//抽象工厂类
//创建一个产品对象,其输入参数类型可以自行设置,通常为String,Enum,Class等,也可以为空
public abstract <T extends Product> T createProduct(Class<T> c);
}
public class ConcreteCreator extends Creator{
public <T extends Product> T createProduct(Class<T> c) {
Product product=null;
try {
product=(product)Class.forName(c.getName()).newInstance();
} catch (Exception e) {
//异常处理
}
return (T)product;
}
}
public class Client{
public static void main (String[] args) {
Creator creator=new ConcreteCreator();
Product product=creator.createProduct(ConcreteProduct1.class);
/*
* 继续业务处理
*/
}
}