相关视频下载地址:链接:http://pan.baidu.com/s/1sjJTFyP 密码:sl81
Java爱好者交流群: 369508920 免费获取项目资源
class="java">car=cn.it.pattern.demo05.Car bus=cn.it.pattern.demo05.Bus jeep=cn.it.pattern.demo05.Jeep
?
/* * 抽象工厂+反射: 解决了工厂方法的代码量过大问题, 而且新增对象也用修改客户端代码 * 可以传入key, 然后通过key查找具体的value, 以后类文件移动仅仅需要修改bean.properties中的value即可 * */ public class AbstractFactory { // 默认创建空的properties文件 private static Properties prop=new Properties(); // 静态块,在类加载的时候,仅仅执行一次 static{ System.out.println("----static-----"); // 通过输入流,加载相应的prop文件 InputStream stream = AbstractFactory.class.getResourceAsStream("bean.properties"); try { prop.load(stream); } catch (Exception e) { throw new RuntimeException(); } } public static Object getVehicle(String type) { // Class是Java的一个类型(File), Class它表示的是一个*.class文件 // 根据key去查找相应的value值 try { Class clazz = Class.forName(prop.getProperty(type)); // 获取了*.class文件后,可以创建一个对象 return clazz.newInstance(); } catch (Exception e) { throw new RuntimeException(); } } }
?
/** * @author 专注Java、Android 企业定制培训 * @添加QQ技术交流群: 369508920 可免费获取项目视频 * @Description: TODO(设计模式之工厂模式) * @Title: PatternDemo.java * @Package cn.it.pattern.demo01 */ public class PatternDemo { /* * 抽象工厂+反射: 解决了对象创建问题, 遵循了开发封闭原则 , 客户端不需要在判断 */ public static void main(String[] args) { // 面向接口编程 Vehicle vehicle = (Vehicle)AbstractFactory.getVehicle("jeep"); Vehicle vehicle2 = (Vehicle)AbstractFactory.getVehicle("car"); vehicle.run(); vehicle2.run(); } }
?