一、简单工厂模式
- 学会使用面向对象的思想进行编程;
- 使代码容易维护,容易扩展,又容易复用;
面向对象的四大特性
- 可维护性:修改时只需要修改需要改的地方;
- 可扩展性:若需要添加属性或者方法,只需要加入即可, 不需要修改其他;
- 可复用性:这些类各方法,不仅能用于这里,还可以重复地运用于其他地方;
- 灵活性好:程序使用起来更加灵活;
面向对象的好处
- 通过封装、继承、多态把程序的耦合度降低;
- 使用设计模式使得程序更加灵活;
- 容易修改,并且易于复用;
用面向对象语言设计四则运算计算器
- 业务逻辑的封装
将业务逻辑与界面逻辑分开,让它们之间的耦合度下降,才可以达到容易维护和扩展
public class Operation {//父类
private static double number1;
private static double number2;
public double result() {
double result = 0;
return result;
}
public double getNumber1() {
return number1;
}
public void setNumber1(double number1) {
this.number1 = number1;
}
public double getNumber2() {
return number2;
}
public void setNumber2(double number2) {
this.number2 = number2;
}
}
- 加减乘除子类
class AddOperation extends Operation {//子类加法
@Override
public double result() {
double result = getNumber1() + getNumber2();
return result;
}
}
class SubOperation extends Operation {// 子类减法
@Override
public double result() {
double result = getNumber1() - getNumber2();
return result;
}
}
class MulOperation extends Operation {// 子类乘法
@Override
public double result() {
double result = getNumber1() * getNumber2();
return result;
}
}
class DivOperation extends Operation {// 子类除法
@Override
public double result() {
double result = 0;
try {
result = getNumber1() / getNumber2();
} catch (Exception e) {
System.out.println("除数不能为0!");
}
return result;
}
}
3.简单工厂模式:可以大大降低代码的耦合度
class OperationFactory{//简单工厂模式
public static Operation newOperation(String operation){
Operation oper = null;
switch(operation){
case "+":
oper = new AddOperation();
break;
case "-":
oper = new SubOperation();
break;
case "*":
oper = new MulOperation();
break;
case "/":
oper = new DivOperation();
break;
}
return oper;
}
}
- 客户端代码
public static void main(String[] args) {
Operation oper;
oper = OperationFactory.newOperation("+");
number1 = 3;
number2 = 4;
double result = oper.result();
System.out.println(result);
}