简单工厂模式及工厂模式


 

 

设计模式基本同时也是应用最广泛的就是工厂模式。

首先来看一个简单工厂模式:

public class OperateFactory{ public static Operate createOperate(String operate){ Operate of = new Operate(); switch(operate){ case "+":of=new AddOperate(); case "-":of=new DeduceOperate(); } return of; } }

public class Operate{
	protected int numA;
	protected int numB;
}
public class AddOperate extends Operate{
	public int getResult(){
		int result = super.numA+super.numB;
		return result;
	}
}

客户端

	public static void main(String[] args) {
		Operate op = OperateFactory.createOperate("+");
		op.numA=1;
		op.numB=2;
		op.getResult();
	}

这是一个简单工厂模式,通过OperateFactory来实例化我们所需要的东西。假设增加乘法运算,修改工程类和增加一个MulOperate继承Operate即可。

简单工厂模式好处就是结构简单,能够实现代码复用,易于阅读。

下面我们在来看看工厂模式:还是实现以上功能。

public interface IFactory{
	public Operate createOperate();
}
public class OperateAdd extends IIFactory{
	@Override
	public Operate createOperate(){
		return new AddOperate();
	}
}


同样,上边的Operate跟运算类不变

public class Operate{
	protected int numA;
	protected int numB;
}
public class AddOperate extends Operate{
	public int getResult(){
		int result = super.numA+super.numB;
		return result;
	}
}


客户端

	public static void main(String[] args) {
		Operate op = OperateAdd.createOperate();
		op.numA=1;
		op.numB=2;
		op.getResult();
	}


简单看上去工厂模式要比简单工厂模式要麻烦些。同样,我们假设要增加一个乘法类该如何做?

我们只需新增一个OperateMul继承IFactory接口,和一个运算类就可以了,我们不需要在更改我们的工厂类了。

工厂模式好处就是将实例化交给了子类,工厂类不再包含逻辑运算。这样就实现了开放—封闭原则。简单工厂类每次我们都有修改工厂类,对该类来说修改时不封闭的。对于小型的系统来说简单工厂的可读性使得他更实用,但是对于大型系统来说,工厂模式更加适合。


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章