在强调 面向接口编程的同时,
有一点需要注意:虽然对象可以通过声明接口来避免对特定接口实现类的过度耦合,
但总归需要一种方式将声明依赖接口的对象与接口实现类关联起来。否则,只依赖一个不做任何事情的接口是没有任何用处的。
前言
假设我们有一个像代码清单4-30所声明的Foo类, 它声明了一个BarInterface依赖。
1 | public class Foo { |
如果该类是由我们设计并开发的,那么还好说,我们可以通过依赖注入,让容器帮助我们解除接 口与实现类之间的耦合性。但是,有时,我们需要依赖第三方库,需要实例化并使用第三方库中的相 关类,这时,接口与实现类的耦合性需要其他方式来避免。 7
通常的做法是通过使用工厂方法(Factory Method)模式,提供一个工厂类来实例化具体的接口 实现类,这样,主体对象只需要依赖工厂类,具体使用的实现类有变更的话,只是变更工厂类,而主 体对象不需要做任何变动。代码清单4-31演示了这种做法。
使用了工厂方法模式的Foo类可能定义
1 | public class Foo { |
针对使用工厂方法模式实例化对象的方式,Spring的IoC容器同样提供了对应的集成支持。我们所 要做的,只是将工厂类所返回的具体的接口实现类注入给主体对象(这里是Foo)。
原文链接: https://www.317318.xyz/p/60362379.html
版权声明: 转载请注明出处.