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