关于工厂模式中具体产品的"小小变异"
简单工厂模式各位都很熟悉了,不再啰嗦
现在的问题是:在具体产品中有几个比较特别,比如在初始化的时候比其他的常规产品多个参数
E.g:
原始的
originalProduct(int i)
变异的(可能是多个变异的产品,不过第一个参数肯定会有)
specialProduct(int i, int j [,...])
在factory生产product时改怎么写呢?
目前的方式是先按照常规的方式来new 然后再判断具体类型来做相应的set参数。
Class product:
public Cmd CmdFactory(int i){
switch(int i){
/*
* 判断i-->new相应的product-->return product(就是个cmd)
*/
}
}
Client :
int j = 0;
int k = 0;
public void process(Cmd cmd){
if(cmd instanceof XXX){
cmd.set(j);
} else (cmd instanceof YYY){
cmd.set(k);
}//可能下面还会有else 的判断
}
目前看着代码就别扭,以后还有可能会出现变异的prodcut,难道到时候还得改Client 增加判断么?
能感觉到肯定有其他更好的办法来替代现有的,但是目前头脑混乱,实在是没头绪,请各位引导一下,不胜感激