Java设计模式——工厂模式扩展
5.5 工厂模式扩展
简单工厂+配置文件解除耦合
(spring底层类似)
可以通过工厂模式+配置文件的方式解除工厂对象和产品对象的耦合。在工厂类中加载配置文件中的全类名,并通过反射技术创建对象进行存储,客户端如果需要对象,直接进行获取即可。
为了演示方便,我们使用properties文件作为配置文件,名称为bean.properties,配置文件内容如下:
american=factory.config_factory.AmericanCoffee
latte=factory.config_factory.LatteCoffee#如果冰咖啡饮品,直接添加全类名即可,咖啡工厂中代码不用修改
icecoffee =factory.config_factory.IceCoffee
//咖啡工厂
public class CoffeeFactory {//加载配置文件,获取配置文件中配置的全类名,并创建全类名的类的对象进行存储// 1.定义容器存储咖啡对象private static Map<String,Coffee> map = new HashMap();// 2.静态代码块 加载配置文件,只需加载一次static {// 2.1创建Properties对象Properties p = new Properties();// 2.2调用p对象中的load方法进行配置文件的加载InputStream is = CoffeeFactory.class.getClassLoader().getResourceAsStream("bean.properties");try {p.load(is);//从p集合中获取全名并创建对象//遍历Properties集合对象Set<Object> keys = p.keySet();for (Object key : keys) {//根据键获取值(全类名)String className = p.getProperty