- 使用工厂模式-通用1
//抽象产品类
public abstract class Product {
public void method1(){
//所有产品的共性
}
//抽象方法 具体有继承它的类去实现
public abstract void method2();
}
//产品实现类
public class ConcretProduct1 extends Product{
@Override
public void method2() {
//TODO
}
}
package factory.total;
public class ConcretProduct2 extends Product{
@Override
public void method2() {
//TODO
}
}
//抽象工厂类
public abstract class Creator {
public abstract <T extends Product> T createMethod(Class<T> c);
}
//具体工厂类:
public class ConcreteCreator extends Creator{
@Override
public <T extends Product> T createMethod(Class<T> c) {
Product pro = null;
try {
pro = (Product) Class.forName(c.getName()).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return (T) pro;
}
}
//场景模拟类
public class Client {
public static void main(String[] args) {
Creator creator = new ConcreteCreator();
Product pro = creator.createMethod(ConcretProduct1.class);
pro.method1();
pro.method2();
}
}