自己写的。可能有不对的地方,请指正,勿喷!!!
简单工厂模式,用的比较普遍,用一个类做工厂,实现一个方法。调用时通过参数判断实例化哪个类,当然返回的类是继承了一个类的子类
看例子吧
运算方法超类
package com.mode;
/**
* 计算器运算超类
* @author hao
*
*/
public class Caculator {
/** 参数1 */
public double numA;
/** 参数2 */
public double numB;
/**
* 获得结果
* @return 运算之后的结果
*/
public double getResult() {
double result = 0;
return result;
}
}
然后,加法类,乘法类,除法类继承之,实现getResult()方法
加法类:
package com.mode;
/**
* 加法
*
* @author hao
*
*/
public class Addition extends Caculator {
@Override
public double getResult() {
return numA + numB;
}
}
乘法类:
package com.mode;
/**
* 乘法
*
* @author hao
*
*/
public class Multiplication extends Caculator {
@Override
public double getResult() {
return numA * numB;
}
}
工厂类:生成我们所需要的运算对象
package com.mode;
/**
* 工厂类,生成运算方法
* @author hao
*
*/
public class Factory {
/**
* 获取运算方式
* @param 所需要的模式类型
* @return 返回运算对象
*/
public static Caculator getOperation(int mode) {
switch (mode) {
case Contants.Operation.ADDITION:
return new Addition();
case Contants.Operation.SUBTRACTION:
case Contants.Operation.MULTIPLICATION:
return new Multiplication();
case Contants.Operation.DIVISION:
default:
break;
}
return null;
}
}
Main类,看效果
package com.mode;
public class Main {
public static void main(String[] args) {
Caculator caculator = Factory.getOperation(Contants.Operation.ADDITION);
caculator.numA = 1.2;
caculator.numB = 2.5;
System.out.println(caculator.getResult());
}
}
我们需要加法,直接在 getOperation传入加法的参数我们即可返回所需要的对象,如果需要增加运算方式,我们直接继承Caculator即可,然后在Factory中的switch中增加一个case段。。