工厂模式是最常见的实例化对象的模式,用来替代new操作。采用这种模式创建对象会有一些额外的操作,但他会带给系统更大的扩展性和更少的修改量。典型的应用spring bean容器。下面简单实现工厂的例子。
1、动物接口,提供公用方法体
public interface Animal { public void eat(); }
2、猫类,继承动物接口,实现猫的eat方法
public class Cat implements Animal { public void eat() { System.out.println("猫在吃饭..."); } }
3、狗类,继承动物接口,实现狗的eat方法
public class Dog implements Animal { public void eat() { System.out.println("狗在吃饭..."); } }
4、工厂类
需要注意两点:1)返回类型为接口 2)通过反射实现类的实例化
public class AnimalFactory { public Animal getAnimalByClassName(String className) { Animal a = null; try { a = (Animal) Class.forName(className).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return a; } }
5、测试类
public class Model { public static void main(String[] args) { AnimalFactory af = new AnimalFactory(); Animal a = af.getAnimalByClassName("design_pattern.factory.Cat"); a.eat(); a = af.getAnimalByClassName("design_pattern.factory.Dog"); a.eat(); } }
代码:https://github.com/shaoyesun/jdk_test.git