大话数据模式(1)简单工厂类-计算器的实现-复用

第一章 代码无错就是优?——简单工厂类

1.1 面试受挫

实现一个+-*/计算,直接写的代码,没有任何特点的代码,耦合性极高、复用没有、代码命名规则糟糕

1.2 初学者代码毛病

①命名不规范;②判断分支差;③鲁棒性差

1.3 代码规范

1.4 面向对象编程

所有的东西都是对象,也有面向过程编程的

1.5 活字印刷,面向对象

活字印刷就是一个面向的生活实例:①复用材料,下次打印书籍,不用重新刻字板了;②维护修改方便,字符有误,可以直接更改这个字模即可;③扩展性,增加、删减内容方便;④灵活性好,可以自由调整顺序

1.6 面向对象的好处

通过封装、继承、多态把程序的耦合度降到最低。

用设计模式使得程序更加灵活。容易修改,并且易于复用。

1.7 复制 VS. 复用

编程有一个原则,就是尽可能的去避免重复

1.8 业务封装

将不同功能性质的对象分开封装,降低耦合性,增强复用性。

1.9 紧耦合 vs.松耦合

将功能块分离,做到互不影响,在对原有代码修改时,做到影响面尽量的小

1.10 简单工厂模型

需要用到谁,才实例化谁,本处只是简单的createBeanFactory

1.11 UML类图

 对象名称、属性名称、方法名称

main.java

1 public class main {
2     public static void main(String[] args) {
3         System.out.println("hello world");
4         Operation oper= OperationFactory.createOperation("+");
5         oper.setNumberA(3);
6         oper.setNumberB(7);
7         System.out.println(oper.getResult());
8     }
9 }
Operation.java【定义的抽象类】
 1 public abstract class Operation {
 2     private double numberA=0;
 3     private double numberB=0;
 4 
 5     public double getNumberA() {
 6         return numberA;
 7     }
 8 
 9     public void setNumberA(double numberA) {
10         this.numberA = numberA;
11     }
12 
13     public double getNumberB() {
14         return numberB;
15     }
16 
17     public void setNumberB(double numberB) {
18         this.numberB = numberB;
19     }
20 
21     public abstract double getResult();
22 }
23 
24 class OperationAdd extends Operation{
25     @Override
26     public double getResult() {
27         return getNumberA()+getNumberB();
28     }
29 }
30 
31 class OperationSub extends Operation{
32     @Override
33     public double getResult() {
34         return getNumberA()-getNumberB();
35     }
36 }
37 
38 class OperationMul extends Operation{
39     @Override
40     public double getResult() {
41         return getNumberA() * getNumberB();
42     }
43 }
44 
45 class OperationDiv extends Operation{
46     @Override
47     public double getResult() {
48         return getNumberA()/getNumberB();
49     }
50 }
OperationFactory.java【简单工厂类】
 1 public class OperationFactory {
 2     public static Operation createOperation(String operate){
 3         Operation oper=null;
 4         switch (operate){
 5             case "+":
 6                 oper=new OperationAdd();
 7                 break;
 8             case "-":
 9                 oper=new OperationSub();
10                 break;
11             case "*":
12                 oper=new OperationMul();
13                 break;
14             case "/":
15                 oper=new OperationDiv();
16                 break;
17         }
18         return oper;
19     }
20 }
原文地址:https://www.cnblogs.com/Mufasa/p/13601107.html