前言:对于简单工厂和抽象工厂都有自己的优点和缺点,
比如简单工厂,如果你需要实现的类过多,你最后会出现工厂泛滥的情况,没有有效的控制代码的可重复性。http://www.cnblogs.com/xiaxj/p/6508799.html
而对于抽象工厂而言,如果你想要在工厂系列中添加一个新的系列,也会是抽象工厂到具体的实现做很大的变动。 抽象工厂模式
因此我们有志之士就开发出来了Spring 那么简单的sping中bean工厂就实现了以前的结合:
首先定义MOveable接口
1 public interface Moveable { 2 void run(); 3 }
然后写具体的car实现类
1 public class Car implements Moveable{ 2 3 public void run(){ 4 System.out.println("老司机开车了.....快上车没时间解释了....."); 5 } 6 }
1 public class navvy implements Moveable { 2 3 @Override 4 public void run() { 5 System.out.println("快来挖掘机学校吧。。。。。"); 6 } 7 }
在srs目录下面建立自己的spring.properties 文件 写上自己具体的实现类
1 VehicleType=com.hone.spring.factory.navvy
Main函数中写上自己的具体实现
import java.util.Properties; public class Test { public static void main(String[] args) throws Exception { Properties props=new Properties(); props.load(Test.class.getClassLoader() .getResourceAsStream("com/hone/spring/factory/spring.properties"));//找到对应的配置文件 String vehicleTypeName=props.getProperty("VehicleType"); //获得反射文件的属性 System.out.println(vehicleTypeName); Object o=Class.forName(vehicleTypeName).newInstance(); //利用反射获得相关的实例对象 Moveable moveable=(Moveable) o; moveable.run(); } }