同样是《大话设计模式》的例子,简单计算器的例子。
运算类:
package 简单计算器;
public class Operating {
private double firstNum;
private double secondNum;
private double result;
public double getResult() {
return result;
}
public void setResult(double result) {
this.result = result;
}
public double getFirstNum() {
return firstNum;
}
public void setFirstNum(double firstNum) {
this.firstNum = firstNum;
}
public double getSecondNum() {
return secondNum;
}
public void setSecondNum(double secondNum) {
this.secondNum = secondNum;
}
}
工厂类:
package 简单计算器;
public interface IOperatingFactory {
public Operating CreateOperation();
}
加法运算类:
public class OperatingAdd extends Operating {
public double getResult(){
double result = 0;
result = getFirstNum() + getSecondNum();
return result;
}
}
减法运算类:
package 简单计算器;
public class OperatingSub extends Operating {
public double getResult(){
double result = 0;
result = getFirstNum() - getSecondNum();
return result;
}
}
乘法运算类:
package 简单计算器;
public class OperatingMul extends Operating {
public double getResult(){
double result = 0;
result = getFirstNum() * getSecondNum();
return result;
}
}
除法运算类:
package 简单计算器;
public class OperatingDiv extends Operating{
public double getResult(){
double result = 0;
try{
result = getFirstNum() / getSecondNum();
}catch(Exception e){
System.out.println("除数不能为0!");
}
return result;
}
}
加法工厂类:
package 简单计算器;
public class AddFactory implements IOperatingFactory {
@Override
public Operating CreateOperation() {
// TODO Auto-generated method stub
return new OperatingAdd();
}
}
减法工厂类:
package 简单计算器;
public class SubFactory implements IOperatingFactory {
@Override
public Operating CreateOperation() {
// TODO Auto-generated method stub
return new OperatingSub();
}
}
乘法工厂类:
package 简单计算器;
public class MulFactory implements IOperatingFactory {
@Override
public Operating CreateOperation() {
// TODO Auto-generated method stub
return new OperatingMul();
}
}
除法工厂类:
package 简单计算器;
public class DivFactory implements IOperatingFactory {
@Override
public Operating CreateOperation() {
// TODO Auto-generated method stub
return new OperatingDiv();
}
}
运行类:
package 简单计算器;
public class Run {
public static void main(String[] args) {
// TODO Auto-generated method stub
IOperatingFactory operFactory = new AddFactory();
Operating oper;
oper = operFactory.CreateOperation();
oper.setFirstNum(3);
oper.setSecondNum(1);
System.out.println(oper.getResult());
}
}