請教關於工廠模式中建立物件需要不同引數的問題

kenshin54發表於2011-04-10
大家好

我在使用工廠模式的時候有些不明白的地方,比如我的工廠模式建立類A,B,C的例項,他們都有介面I,但是建立A不需要引數,建立B需要1個引數,建立C需要2個引數,那我工廠類為虛擬碼大概寫成這個樣子:

public static I createI(int type, Object param1, Object param2){
	if (type == 1) {
		return new A();
	}else if (type == 2) {
		return new B(param1);
	}else if (type == 3) {
		return new C(param1, param2);
	}else {
		//exception
	}
}
<p class="indent">


然後到了後面,我又多了D和E的實現,但是D需要3個引數,E需要4個引數,這樣我就要改工廠類的方法變成:

public static I createI(int type, Object param1, Object param2, Object param3, Object param4){
	if (type == 1) {
		return new A();
	}else if (type == 2) {
		return new B(param1);
	}else if (type == 3) {
		return new C(param1, param2);
	}else if (type == 4) {
		return new D(param1, param2, param3);
	}else if (type == 5) {
		return new E(param1, param2, param3, param4);
	}else {
		//exception
	}
}
<p class="indent">


這樣我之前的建立A,B,C的程式碼也要修改了,我總覺得這樣不對,但是又不知道要怎麼改,請大家指點一下

相關文章