簡單工廠模式及工廠模式


 

 

設計模式基本同時也是應用最廣泛的就是工廠模式。

首先來看一個簡單工廠模式:

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接口,和一個運算類就可以了,我們不需要在更改我們的工廠類了。

工廠模式好處就是將實例化交給了子類,工廠類不再包含邏輯運算。這樣就實現了開放—封閉原則。簡單工廠類每次我們都有修改工廠類,對該類來說修改時不封閉的。對於小型的系統來說簡單工廠的可讀性使得他更實用,但是對於大型系統來說,工廠模式更加適合。


 

 

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