zoukankan      html  css  js  c++  java
  • 大话数据模式(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 }
  • 相关阅读:
    排序总结[3]_线性排序算法
    Spring九问
    DP-最大递增子序列与最大递增子数组; 最大公共子序列与最大公共子数组。
    java 8 新特性
    数据库事务隔离等级
    算法思维方式之二——DP与DFS
    算法思维方式—— 由排列组合想到的
    java Servlet简介
    java hashCode, 引用以及equals().
    java反射简介
  • 原文地址:https://www.cnblogs.com/Mufasa/p/13601107.html
Copyright © 2011-2022 走看看