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 }
  • 相关阅读:
    [转载][开源框架推荐]VTDXML:世界上最快的XML处理框架
    iptables规则的查看、添加、删除和修改
    [转载]Linux大文件传输
    nginx+ php 安装配置实用
    wojilu框架代码分析之ActionProcessor.Process()
    数据库范式通俗理解,谈谈数据库设计
    我记录综合系统学习研究之用户管理二(wojilu.Web.Controller.Users MainController)
    我记录学习研究之前端开发二(js基于1.8版)
    我记录综合系统学习研究之开篇
    我记录综合系统学习研究之用户管理一(wojilu.Web.Controller.Users MainController)
  • 原文地址:https://www.cnblogs.com/Mufasa/p/13601107.html
Copyright © 2011-2022 走看看