工厂方法以及spring对工厂方法的支持
来源:互联网 发布:java教育平台源码下载 编辑:程序博客网 时间:2024/06/05 18:32
虽然对象可以通过接口来避免对特定实现类的过度耦合,但是我们仍然需要将接口与实现类关联起来
我们通常像下面这样直接声明对象,但是这样接口与实现类之间的耦合性过强。
public class Foo { private BarInterface barInstance; public Foo() { barInstance=new BarInterfaceImpl(); }}
为了避免接口与实现类的强耦合,通常的做法是使用工厂类来实例化接口的实现类,这样主体对象只要依赖工厂类。即使具体的实现类发生了变化只要改动工厂类.避免了具体实现类的变更
静态工厂方法
利用Spring完成工厂方法代码如下
接口
public interface BarInterface { void say();}
接口实现类
public class BarInterfaceImpl implements BarInterface { public void say() { System.out.println("bar"); }}
public class Foo { private BarInterface barInstance; public Foo() { } public void say() { barInstance.say(); } public void setBarInstance(BarInterface barInstance) { this.barInstance = barInstance; } public BarInterface getBarInstance() { return barInstance; }}
工厂类
public class StaticBarInterfaceFactory { public static BarInterface getInstance() { return new BarInterfaceImpl(); }}
在spring.xml中配置如下
<bean id="bar" class="com.spring.bean.factory.StaticBarInterfaceFactory" factory-method="getInstance"/><bean id="foo" class="com.spring.bean.factory.Foo"> <property name="barInstance" ref="bar"/></bean>
如果工厂类对应的getInstance方法需要参数用于构造对象的话,可以更改如下
<bean id="bar" class="com.spring.bean.factory.StaticBarInterfaceFactory" factory-method="getInstance"> <constructor-arg index="0" value="str"/></bean>
非静态工厂方法
public class NonStaticBarInterfaceFactory { public BarInterface getInstance() { return new BarInterfaceImpl(); }}
<bean id="barFactory" class="com.spring.bean.factory.NonStaticBarInterfaceFactory"/><bean id="bar2" factory-bean="barFactory" factory-method="getInstance"></bean><bean id="foo2" class="com.spring.bean.factory.Foo"> <property name="barInstance" ref="bar2"/></bean>
阅读全文
0 0
- 工厂方法以及spring对工厂方法的支持
- spring实例工厂,静态工厂以及写有工厂方法的程序
- 工厂模式以及工厂方法
- Spring的静态工厂方法
- Spring的实例工厂方法和静态工厂方法
- Spring的实例工厂方法和静态工厂方法
- 简单工厂方法、工厂方法以及抽象工厂方法的区别
- 简单工厂(可配置的工厂类)和工厂方法模式以及抽象工厂
- 对工厂方法和简单工厂的总结
- spring的静态工厂和实例工厂方法
- 对工厂方法模式的理解
- 对工厂方法模式学习的笔记
- 对工厂方法模式的理解
- Spring学习之使用静态工厂方法以及实例工厂方法配置bean
- 简单工厂模式,工厂方法模式,抽象工厂模式,spring的狂想
- spring 工厂方法配置bean
- java va中工厂模式( 静态工厂模式、工厂方法模式、抽象工厂模式)的介绍以及简单例子
- 工厂与工厂方法
- Linux-用户与组群
- 快速入门分布式消息队列之 RabbitMQ(3)
- Windows和Ubuntu双系统,修复UEFI引导的两种办法
- dairy 12.10 学期总结
- 设置京东搜索框状态栏渐变
- 工厂方法以及spring对工厂方法的支持
- HTML基础(6. 超链接与锚点)
- mybatis如何实现mysql数据库的主键返回主键返回
- 111
- 【20171210】用java实现简易贪吃蛇
- CSS3边框
- 剑指offer之二叉树的下一个结点
- 提交代码
- 牛客网程序设计赛低年级组之数圈圈