1.简单工厂模式
类图:
这个是《大话设计模式》中简单工厂的例子。
代码如下:
Operation:运算类
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;
}
}
OperatingAdd:加法类
package 简单计算器;
public class OperatingAdd extends Operating {
public double getResult(){
double result = 0;
result = getFirstNum() + getSecondNum();
return result;
}
}
OperatingSub:减法类
package 简单计算器;
public class OperatingSub extends Operating {
public double getResult(){
double result = 0;
result = getFirstNum() - getSecondNum();
return result;
}
}
OperationMul:乘法类
package 简单计算器;
public class OperatingMul extends Operating {
public double getResult(){
double result = 0;
result = getFirstNum() * getSecondNum();
return result;
}
}
OperationDiv:除法类
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;
}
}
OperationFactory:简单工厂类
package 简单计算器;
public class OperatingFactory {
public static Operating createOperate(String operate){
Operating oper = null;
switch(operate)
{
case "+":
oper = new OperatingAdd();
break;
case "-":
oper = new OperatingSub();
break;
case "*":
oper = new OperatingMul();
break;
case "/":
oper = new OperatingDiv();
break;
}
return oper;
}
}
运行类:
package 简单计算器;
public class Run {
public static void main(String[] args) {
// TODO Auto-generated method stub
Operating oper;
oper = new OperatingFactory().createOperate("/");
oper.setFirstNum(3);
oper.setSecondNum(0);
System.out.println(oper.getResult());
}
}