抽象工厂:
- 抽象产品类
Product
负责定义产品的共性,实现对事物最抽象的定义 - 抽象创建类
Creator
即为抽象工厂 - 具体创建类
ConcreteCreator
为具体的实际工厂
一个通用的模板代码如下。
product:
public abstract class Product {
//产品类的公共方法
public void method1(){
//业务处理逻辑
}
//抽象方法
public abstract void method2();
}
ConcreteProduct1:
public class ConcreteProduct1 extends Product{
public void method2() {
//业务处理逻辑
}
}
ConcreteProduct2:
public class ConcreteProduct2 extends Product{
public void method2() {
//业务处理逻辑
}
}
Creator:
public abstract class Creator {
/*
* 创建一个产品对象,输入参数自定义
* */
public abstract <T extends Product> T createProduct(Class<T> c);
}
ConcreteCreator:
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;
}
}
Client :
public class Client {
public static void main(String[] args) {
Creator creator = new ConcreteCreator();
Product product = creator.createProduct(ConcreteProduct1.class);
/*
* 其他业务代码
* */
}
}
重点:
1. 简单工厂,是对产品product提供了一个抽象工具类,替代了工厂Creator和工厂实现ConcreteCreator的定义。(其余的结构和普通工厂代码一致)
2. 抽象工厂,是在Creator工厂模式下,提供了生产多种类型的产品。(其余的结构和普通工厂模式代码一致)