publicabstractclassAbstractFactory{publicabstract<T extendsAbstractProduct> T createProduct(Class<T> clz);}
具体工厂,反射机制,减少具体工厂种类
publicclassConcreteFactoryextendsAbstractFactory{@Overridepublic<T extendsAbstractProduct> T createProduct(Class<T> clz){
AbstractProduct p = null;try{
p =(AbstractProduct) Class.forName(clz.getName()).newInstance();}catch(Exception e){
e.printStackTrace();}return(T) p;}}