1.简单工厂模式UML图 (以两个数进行加减乘除运算为例)
2.java代码示例
package com.fr.designpattern.ch01simplefactory.pattern;
public abstract class Operation {
private double numberA;
private double numberB;
public abstract double getResult();
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;
}
}
package com.fr.designpattern.ch01simplefactory.pattern;
public class OperationAdd extends Operation {
@Override
public double getResult() {
double result=0.0;
result=this.getNumberA()+this.getNumberB();
return result;
}
}
package com.fr.designpattern.ch01simplefactory.pattern;
public class OperationSub extends Operation {
@Override
public double getResult() {
double result=0.0;
result=this.getNumberA()-this.getNumberB();
return result;
}
}
package com.fr.designpattern.ch01simplefactory.pattern;
public class OperationMul extends Operation {
@Override
public double getResult() {
double result=0.0;
result=this.getNumberA()*this.getNumberB();
return result;
}
}
package com.fr.designpattern.ch01simplefactory.pattern;
public class OperationDiv extends Operation {
@Override
public double getResult() {
double result=0.0;
if (this.getNumberB()!=0.0) {
result=this.getNumberA()/this.getNumberB();
}
return result;
}
}
package com.fr.designpattern.ch01simplefactory.pattern;
public class OperationFactory {
public static Operation createOperation(String operate){
Operation operation=null;
switch (operate) {
case "+":
operation=new OperationAdd();
break;
case "-":
operation=new OperationSub();
break;
case "*":
operation=new OperationMul();
break;
case "/":
operation=new OperationDiv();
break;
default:
break;
}
return operation;
}
}
3.面向对象编程带来的好处
<1>多用面向对象的思维编写代码,做到代码易维护,易扩展,易复用,灵活性好;
<2>面向对象四大特性:抽象,封装,继承,多态;业务逻辑处理代码与展示进行分离,做到复用性高,可维护性高;
<3>要多考虑复用,而不是复制;高复用的代码易于维护和扩展;