Spring 入门学习 —— XML 格式文件介绍(十四)(工厂方法与FactoryBean [2])

86 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情

上一篇文章我们引入了工厂方法的概念,用来解决依赖接口和实现类的耦合,这篇文章我们来做具体的介绍。

如何使用工厂方法模式避免耦合

上一篇文章我们说到,在使用工厂模式将依赖接口和对应的实现类进行解耦的时候,通常会使用到工厂方法模式。在使用工厂方法模式的时候,需要我们提供一个工厂类实例化具体的接口实现类

这样一来,主体对象(依赖其他接口的业务对象)只需要依赖工厂类就好了,使用的具体的接口实现类如果有变更,那么只需要变更工厂类即可,主体对象就不需要有任何改变了。

举例如下:

public class Test {
    private DependentedInterface deInterface;
    public Test() {
        deInterface = DependentedInterfaceFactory.getInstance();
    }
}

通过这种方式得到的对象实例,即使用工厂方法模式实例化的对象,Spring IOC 容器同样也提供了对应的集成支持。对我们来说,需要做的工作就是把工厂类返回的具体的接口实现类注入给主体对象(就是上面例子中的Test 类)。

工厂方法模式的实现

下面讲述一下几种不同的工厂方法模式的注入方式实现。

静态工厂方法

静态工厂方法的英文是static factory method,这里假设某个第三方库发布了一个接口DependentedInterface,同时为了防止以后该接口实现类的变动对调用客户端的影响,第三方库也提供了一个静态工厂方法实现类StaticDependentedInterfaceFactory,代码如下:

public class StaticDependentedInterfaceFactory {
    pubilc static DependentedInterface getInstance() {
        return new DependentedInterfaceImpl();
    }
}

因为我们现在文章的主题是xml 格式文件的写法,所以我们需要知道,如果使用xml 格式文件来完成这个被依赖对象的注入。

总结

这篇文章看似在讲解工厂方法模式解决耦合问题,实则为了引入如何使用xml 格式文件进行依赖注入。这些内容我们后续继续介绍。