什么是工厂模式?工厂模式是java常用的设计模式之一,这种模式提供了一种创建对象的方式。java是一种面向对象的语言,创建对象的方式有3种,一种是使用new关键字创建对象,一种是通过反射来创建对象,还有一种就是通过工厂模式来创建对象。在工厂模式中,创建对象不会对外暴露对象的创建逻辑,并且是通过一个共同的接口来指向创建的对象。
我们先来创建一个英雄接口。
public interface Hero {
public void attribute();
}
接下来再创建3个实现类,并实现接口。
class Hero1 implements Hero{
String name="苏秦";
@Override
public void attribute() {
System.out.println(name);
System.out.println("纵横捭阖");
}
}
class Hero2 implements Hero{
String name ="陈长生";
@Override
public void attribute() {
System.out.println(name);
System.out.println("西宁一庙治天下");
}
}
class Hero3 implements Hero{
String name="李斯";
@Override
public void attribute() {
System.out.println(name);
System.out.println("千古一相");
}
}
然后我们来创建工厂。
class Factory{
public static Hero getInstance(String name) throws InstantiationException,
IllegalAccessException, ClassNotFoundException, NoSuchMethodException, SecurityException,
IllegalArgumentException, InvocationTargetException{
Hero hero = null;
Class<?> c = null;
c=Class.forName(name);
hero=(Hero)c.newInstance();
Method method = c.getMethod("attribute");
method.invoke(hero);
return hero;
}
}
最后写测试类,进行测试。
public class FactoryTest {
public static void main(String[] args) throws InstantiationException, IllegalAccessException,
ClassNotFoundException, NoSuchMethodException, SecurityException,
IllegalArgumentException, InvocationTargetException{
Hero hero1 = Factory.getInstance("com.chongzi.keji.other.Hero1");
Hero hero2 = Factory.getInstance("com.chongzi.keji.other.Hero2");
Hero hero3 = Factory.getInstance("com.chongzi.keji.other.Hero3");
}
}
看输出结果:
苏秦
纵横捭阖
陈长生
西宁一庙治天下
李斯
千古一相
工厂模式,你懂了吗?