1、 将各个功能分别封装成类,继承父类;然后建立一个工厂类,依赖于父类,在工厂类中,根据不同情况,用不同的子类实例化父类对象,从而执行相应的子类操作。
例如: 父类为运算类,加法类、减法类、乘法类以及除
法类分别是运算类的4个子类;建立工厂类依赖于运算类,其中有一个运算函数,将运算类对象初始化为空,如果函数的参数为“+”,则用加法类实例化运算类对象,如果函数的参数为“-”,则用减法类实例化运算类对象,依次类推。最后返回运算类对象。/
2、结构图如下:
3、实现代码如下
class Operation{
public double numberA = 0;
public double numberB = 0;
public double getNumberA() {
return numberA;
}
public void setNumberA(double numberA) {
this.numberA = numberA;
}
public double getNumberB() {
return numberB;
}
public void setNumberB(double numberB) {
this.numberB = numberB;
}
public double getResult(){
double result = 0;
return result;
}
}
class OperationAdd extends Operation{
public double getResult(){
double result = numberA + numberB;
return result;
}
}
class OperationSub extends Operation{
public double getResult(){
double result = numberA - numberB;
return result;
}
}
class OperationMul extends Operation{
public double getResult(){
double result = numberA * numberB;
return result;
}
}
class OperationDiv extends Operation{
public double getResult(){
double result = numberA / numberB;
return result;
}
}
class OperationFactory{
public static Operation createOperate(String operate){
Operation oper = null;
switch(operate){
case "+":oper = new OperationAdd();break;
case "-":oper = new OperationSub();break;
case "*":oper = new OperationMul();break;
case "/":oper = new OperationDiv();break;
}
return oper;
}
}
public class Main5{
public static void main(String [] args){
Operation oper;
oper = OperationFactory.createOperate("+");
oper.numberA = 1;
oper.numberB = 1;
double result = oper.getResult();
System.out.println(result);
}
}
运行结果:
2.0