工厂模式 六 集连载 之 "优化抽象工厂" 5/6_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 工厂模式 六 集连载 之 "优化抽象工厂" 5/6

工厂模式 六 集连载 之 "优化抽象工厂" 5/6

 2015/4/29 12:49:48  hnliu_hong  程序员俱乐部  我要评论(0)
  • 摘要:相关视频下载地址:链接:http://pan.baidu.com/s/1sjJTFyP密码:sl81Java爱好者交流群:369508920免费获取项目资源采用Properties管理Bean实例car=cn.it.pattern.demo05.Carbus=cn.it.pattern.demo05.Busjeep=cn.it.pattern.demo05.Jeep优化抽象工厂/**抽象工厂+反射:解决了工厂方法的代码量过大问题,而且新增对象也用修改客户端代码*可以传入key
  • 标签:模式 抽象 优化

相关视频下载地址:链接:http://pan.baidu.com/s/1sjJTFyP 密码:sl81

Java爱好者交流群: 369508920 免费获取项目资源

采用Properties管理Bean实例

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();
	}
}

?

  • 设计模式之优化抽象工厂_05.zip (2.2 MB)
  • 下载次数: 0
发表评论
用户名: 匿名