工厂模式是一种在工程中广泛应用的设计模式,对代码的解耦合起到了很大的作用
工厂模式提供了一种绝佳的创建对象的方法。在工厂模式中,我们并不会直接使用new来创建一个对象,而是使用一个共同的接口类来指定其实现类,这就大大降低了系统的耦合性——我们无需改变每个调用此接口的类,而直接改变实现此接口的类即可完成软件的更新迭代
工厂模式的代码
import java.util.ResourceBundle;
/**
* 使用此工厂类创建bean实例
*/
public class BeanFactory {
//加载配置文件
private static ResourceBundle bundle;
static {
bundle = ResourceBundle.getBundle("instance");
}
//根据指定的key,读取配置文件的全路径,创建对象
public static <T>T getInstance(String key,Class<T> clazz){
String className = bundle.getString(key);
try {
return (T)Class.forName(className).newInstance();
}catch (Exception e){
throw new RuntimeException();
}
}
}
Class.forName(className).newInstance()方法就会返回className对应的类,这样就能够使用了。
工厂模式的思想正好契合SpringIOC的设计思想:某一接口的具体实现类的选择控制权从调用类中移除,转而交给第三方决定,即借由Spring的Bean配置来实现控制,这同样也是工厂模式的思想。 在Spring中有两个最基本的工厂,BeanFactory和ApplicationContext。BeanFactory是Spring框架的基础设施,面向的是Spring本身,也就是用于创建Spring扩展的其他内容,如Spring Security、Spring JDBC等,而ApplicationContext这个工厂是面向开发者的,也就是应用上下文——配置文件等,开发者能够使用这个工厂实现自己的功能。