浅谈Java设计模式之简单工厂模式

在一个Java应用当中,在A实例调用B实例的方法时,则称A依赖于B。那么如何实现A调用B呢?通常我们的做法是在A中使用new来创建一个B。这种方式被称为硬编码耦合。这样做的坏处在于:如果需要采用另一个类C代替B,那么,我们就不得不修改A中的代码。如果有N个类都依赖于B,并且现在要换成C,那么我们就需要修改N个地方。这是一件可怕的事情。

因此,为了降低耦合,我们可以考虑如下方案:我们采用一个能够制造的工厂IBFactory,B实现IB接口,而IBFactory负责创建IB的实例,A调用IBFactory来得到IB的实例,当系统需要一个更好的B即BetterB时,只需要让BetterB实现IB,并让IBFactory生产BetterB,这样,就完成了重构而不用该太多的代码。

好吧,这样说不怎么清除,还是看代码吧:

public interface IB 
{
	//定义一个B的接口IB,为方便起见,我们什么都不写,只关注结构
}


public class B implements IB//IB的实现类,同样的,我们什么都不写,只关注结构
{

}

public class IBFactory//定义生产IB实例的工厂
{
	public IB getIB()
	{
		return new B();//工厂生产对象,生产B
	}

}

当我们需要在A中使用B的实例的时候,我们就可以这样:

public class A 
{
	private IB ib;//定义IB接口

	public A(IB ib)
	{
		this.ib = ib;
	}
	
	public static void main(String[] args)
	{
		IBFactory factory=new IBFactory();//首先创建一个工厂
		
		A a=new A(factory.getIB());//通过工厂获得需要依赖的对象
		
		
	}
	

}


当我们需要A依赖BetterB的时候,我们不必再A中修改代码,只需在IBFactory中修改即可,

public class IBFactory//定义生产IB实例的工厂
{
	public IB getIB()
	{
		return new BetterB();//工厂生产对象,生产BetterB
	}

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值