代码无错就是优?
程序要容易维护,容易扩展,容易复用。
刻版印刷术=》活字印刷术的优点在于:
1、只改需要改的地方,可维护性。
2、用了之后还可以再用,可重用性。
3、加字只需刻字加入就行,可扩展性。
4、横排竖排随便移动,灵活性好。
UML图
/**
* @author huang
* @date 2019/10/17
*/
public class Operation {
private double _numberA = 0;
private double _numberB = 0;
public double get_numberA() {
return _numberA;
}
public void set_numberA(double _numberA) {
this._numberA = _numberA;
}
public double get_numberB() {
return _numberB;
}
public void set_numberB(double _numberB) {
this._numberB = _numberB;
}
public double getResult() {
double result = 0;
return result;
}
static class OperationAdd extends Operation {
public double getResult() {
double result = 0;
result = get_numberA() + get_numberB();
return result;
}
}
static class OperationSub extends Operation {
public double getResult() {
double result = 0;
result = get_numberA() - get_numberB();
return result;
}
}
static class OperationMul extends Operation {
public double getResult() {
double result = 0;
result = get_numberA() * get_numberB();
return result;
}
}
static class OperationDiv extends Operation {
public double getResult() {
double result = 0;
result = get_numberA() / get_numberB();
return result;
}
}
}
/**
* @author huang
* @date 2019/10/17
*/
public class OperationFactory {
public static Operation createOperation(String operation){
Operation operation1 = null;
switch (operation){
case "+":
operation1 = new Operation.OperationAdd();
break;
case "-":
operation1 = new Operation.OperationSub();
break;
case "*":
operation1 = new Operation.OperationMul();
break;
case "/":
operation1 = new Operation.OperationDiv();
break;
}
return operation1;
}
public static void main(String[] args) {
Operation operation;
operation = OperationFactory.createOperation("*");
operation.set_numberA(2);
operation.set_numberB(3);
double result = operation.getResult();
System.out.println(result);
}
}
将new对象的操作交给factory完成。
目的:
1、解耦,将对象的创建和使用分开。
2、降低代码的重复性
3、工厂管理了对象的创建逻辑,使用者不需要知道对象的创建过程,只需使用,避免创建逻辑错误。
适用的场景:
1、对象的创建和实例化,初始化参数,查询数据库。
2、类本身有很多子类,类的创建或调用容易发生改变。