浅谈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
	}

}



你可能感兴趣的:(java,java设计模式,工厂模式)