大话设计模式之——简单工厂模式

来源:互联网 发布:天猫双11实时数据直播 编辑:程序博客网 时间:2024/05/16 08:11

本系列博客为《大话设计模式》这本书的读后感,如果感兴趣的朋友请去看原书


一、封装、继承与多态

     封装的一个好处就是实现业务逻辑和界面逻辑的分离。而继承则可以实现修改某一个业务逻辑而不影响到其他的业务逻辑。


二、可维护性、可复用性、可拓展性、灵活性的感性认识

     在该书中举了一个“活字印刷”的例子,本人觉得挺形象的。用那个例子来解释以上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 {@Overridepublic double getResult() {return numberA + numberB;}}


3、OperationSub

public class OperationSub  extends Operation{@Overridepublic double getResult() {return numberA - numberB;}}


4、OperationMul

public class OperationMul  extends Operation {@Overridepublic double getResult() {return numberA * numberB;}}


5、OperationDiv

public class OperationDiv  extends Operation {@Overridepublic 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);}}



     

   

1 0
原创粉丝点击