本系列博客为《大话设计模式》这本书的读后感,如果感兴趣的朋友请去看原书
一、封装、继承与多态
封装的一个好处就是实现业务逻辑和界面逻辑的分离。而继承则可以实现修改某一个业务逻辑而不影响到其他的业务逻辑。
二、可维护性、可复用性、可拓展性、灵活性的感性认识
在该书中举了一个“活字印刷”的例子,本人觉得挺形象的。用那个例子来解释以上4个名次就是:
可维护性:能够修改需要修改的字。
可复用性:无需修改的字可以重复使用
可拓展性 :可以在原来的基础上增加新的字进去
灵活性:印有字的模板既可以横着排,也可以竖着排
三、UML图
四、代码实现(Java版)
1、Operation
public class Operation {
public double numberA = 0;
public double numberB = 0;
public double getResult() throws Exception{
return 0;
}
}
2、OperationAdd
public class OperationAdd extends Operation {
@Override
public double getResult() {
return numberA + numberB;
}
}
3、OperationSub
public class OperationSub extends Operation{
@Override
public double getResult() {
return numberA - numberB;
}
}
4、OperationMul
public class OperationMul extends Operation {
@Override
public double getResult() {
return numberA * numberB;
}
}
5、OperationDiv
public class OperationDiv extends Operation {
@Override
public double getResult() throws Exception {
if(numberB == 0){
throw new Exception("除数不能为0");
}
return numberA / numberB;
}
}
6、OperationFactory
public class OperationFactory {
public static Operation createOperation(String operator) {
Operation opr = null;
switch (operator) {
case "+":
opr = new OperationAdd();
break;
case "-":
opr = new OperationSub();
break;
case "*":
opr = new OperationMul();
break;
case "/":
opr = new OperationDiv();
break;
default:
break;
}
return opr;
}
}
--------------------------------------------以上是业务逻辑,以下是界面逻辑-------------------------------------------
7、UIMain
import java.util.Scanner;
public class UIMain {
public static void main(String[] args) throws Exception{
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个操作数");
double numberA = scanner.nextDouble();
System.out.println("请输入操作符");
String operator = scanner.next();
System.out.println("请输入第二个操作符");
double numberB = scanner.nextDouble();
Operation opr = OperationFactory.createOperation(operator);
opr.numberA = numberA;
opr.numberB = numberB;
double result = opr.getResult();
System.out.println("运算结果为: " + result);
}
}