工厂:使用一个单独的类来做创造各种实例的过程(工厂类)
初学者代码毛病:
- 命名不规范
- 多个if判断导致每个if都要判断,多做无用功
- 除0判断,非法输入判断
代码应达到的要求:可维护(方便修改),可复用(能重复使用),可扩展(方便增加功能),灵活性好(方便调整功能,比如执行顺序)
设计模式使得程序更加灵活。
例:项目地址
测试类:
1 public class testMain {
2 public static void main(String[] args) throws Exception {
3 Operation operation;
4 operation = OperationFactory.createOperate("/");
5 operation.numberA = 12;
6 operation.numberB = 3;
7 System.out.println(operation.getResult());
8 }
9 }
工厂类:
1 public class OperationFactory {
2 public static Operation createOperate(String operate){
3 Operation op = null;
4 switch (operate){
5 case "+":
6 op = new OperationAdd();
7 break;
8 case "-":
9 op = new OperationSub();
10 break;
11 case "*":
12 op = new OperationMul();
13 break;
14 case "/":
15 op = new OperationDiv();
16 break;
17 }
18 return op;
19 }
20 }
运算类:
public class Operation {
public double numberA = 0;
public double numberB = 0;
public double getResult() throws Exception {
double result = 0;
return result;
}
}
加法类:
public class OperationAdd extends Operation{
public double getResult(){
double result = 0;
result = numberA + numberB;
return result;
}
}
减法类:
1 public class OperationSub extends Operation{
2 public double getResult(){
3 double result = 0;
4 result = numberA - numberB;
5 return result;
6 }
7 }
乘法类:
public class OperationMul extends Operation {
public double getResult(){
double result = 0;
result = numberA * numberB;
return result;
}
}
除法类:
public class OperationDiv extends Operation {
public double getResult() throws Exception {
double result = 0;
if (numberB==0){
throw new Exception("除数不能为0!");
}
result = numberA/numberB;
return result;
}
}
来源:https://www.cnblogs.com/z-dk/p/10513279.html