工厂方法模式的回顾
工厂方法模式通过对工厂的抽象,然后产出一个具体的工厂来生成一具体的的产品, 也就是每个抽象工厂中都要一个返回产品参数的方法。如果这个产品和现在的产品不是同一类的产品,那我们就要重新创建一个抽象工厂(因为返回的类型不一样)。
工厂方法模式的优化
因为抽象工厂的一个方法返回一个类型,我们可以用一泛型E作为返回的数据类型。
而具体产生的产品,会是抽象产品的子类。也用一个泛型T来表示。其中T extends E。
抽象工厂
public abstract class AbstractFactory<E> {
/**
*
* @param clz 具体产品的class
* @param <T> 具体产品
* @return
*/
public abstract <T extends E> T createProduct(Class<T> clz);
}
一个具体的工厂
public class ConCreateAbstractFactoryA<E> extends AbstractFacto