本系列博客为《大话设计模式》这本书的读后感,如果感兴趣的朋友请去看原书
一、封装、继承与多态
封装的一个好处就是实现业务逻辑和界面逻辑的分离。而继承则可以实现修改某一个业务逻辑而不影响到其他的业务逻辑。
二、可维护性、可复用性、可拓展性、灵活性的感性认识
在该书中举了一个“活字印刷”的例子,本人觉得挺形象的。用那个例子来解释以上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); } }