首页 > 其他分享 >大话设计模式 ---- 第一章简单工厂笔记

大话设计模式 ---- 第一章简单工厂笔记

时间:2022-09-27 23:25:18浏览次数:79  
标签:NumberB temp NumberA int double 大话 ---- 设计模式 public

第一章简单工厂模式

计算器实现

建民哥在大二的时候让我们设计一个口算卡

我第一版的设计模式:(虽然功能实现了,但是啥也不是,一旦有新要求需要大改程序直接作废)

        //定制数量
       int x;
       System.out.println("输入制定数位");
       Scanner sc = new Scanner(System.in);
       x = sc.nextInt();

       //打印多少题
       int ans = 10;
       
       //最大值
       System.out.println("输入限定每个数的最大值");
       int len;
       len = sc.nextInt();
       int random1;

       int j = 0;
       int re1 = 0;//记录正确个数


       //System.out.println(chark);
       while (j <= ans) {
           int houhou = 0;

           String temp = new String();
           for (int i = 0; i < (2 * x) - 1; i++) {
               if (i % 2 == 0) {
                   int p = random.nextInt(len) + 1;
                   temp += Integer.toString(p);

              } else {
                   switch (random.nextInt(4)) {
                       case 0:
                           temp += '+';

                           break;
                       case 1:
                           temp += '-';

                           break;
                       case 2:
                           temp += '*';
                           break;
                       case 3:
                           temp += '/';
                           break;

                  }
              }


          }

           if (text(str, temp)) {
               str[j] = temp;
               j++;

               System.out.println(temp);
               BigDecimal result1 = new BigDecimal(sc.next());
               BigDecimal result = cal(temp);

               if (result1.equals(result)) {
                   System.out.println("√");
                   re1++;
              } else {
                   System.out.println("×");
              }
          }

      }
       System.out.println("正确率:" + String.format("%.2f", (re1 * 0.1) / ans * 10));
  }

hhh我居然还找出来我以前的代码了,可以发现我很多问题

1.我命名不规范,虽然有注释,但是只能我看懂

2.把+ - * / 封装成Operation接口,然后直接在类中写出,直接调用接口(这样就可以客户端还有逻辑端分开了)---->这样我就完成了封装,继承,多态

3.我在Number类中写两个参数

public class Number {

   private double NumberA;
   private double NumberB;

   public double getNumberA() {
       return NumberA;
  }

   public void setNumberA(double numberA) {
       NumberA = numberA;
  }

   public double getNumberB() {
       return NumberB;
  }

   public void setNumberB(double numberB) {
       NumberB = numberB;
  }

}
public interface Opeartion {
   
   public double add(double NumberA,double NumberB);
   
}


public class OperationImpl implements Opeartion{

   @Override
   public double add(double NumberA,double NumberB)
  {
       return NumberA + NumberB;
  }

}

然后如何去实例化对象?直接new 这个接口嘛,不是,我们需要一个工厂OperationFactory来管理,你的接口,这样你就可以在客户端直接调用方法就行了

public class OpeartionFactory {

   public static double creatOperate(String operate,double NumberA,double NumberB)
  {
       Opeartion opeartion = new Opeartion();
       double res = 0;
       switch (operate)
      {
           case "+":
               res = opeartion.add(NumberA, NumberB);
           case "-":
               res = opeartion.delect(NumberA, NumberB);
           case "*":
               //opeartion.mul(NumberA,NumberB);
           case "/":
               //opeartion.division(NumberA,NumberB);
      }
       return res;
  }

}
 (19条消息) 简单工厂模式_weiwenlongll的博客-CSDN博客_简单工厂模式

标签:NumberB,temp,NumberA,int,double,大话,----,设计模式,public
From: https://www.cnblogs.com/shuangshuangzi/p/16736386.html

相关文章

  • 基于SSM+Vue健身预约系统Java健身房管理系统 健身器材管理系统(源码调试+讲解+文档)
    ......
  • 实验3:OpenFlow协议分析实践
    实验3:OpenFlow协议分析实践一、实验要求1.基本要求(1)拓扑文件#!/usr/bin/envpythonfrommininet.netimportMininetfrommininet.nodeimportController,RemoteC......
  • docker 创建镜像images
    1.先下载基础镜像,并准备好你要部署的jar包 2.编写dockerfile 文件FROMascdc/jdk8:latestRUNmkdir-p/home/app/demo&&chmod777/home/app/demo&&cd/home......
  • Python实验报告(第四周
    一、实验目的和要求学会应用列表、元组、字典等序列;二、实验环境软件版本:Python3.1064_bit三、实验过程1、实例1:输出每日一贴(1)在IDLE中创建一个名称为tips.py的文......
  • English words chapter 20220927
    ......
  • 学习笔记:python:字典删除问题
    python学习:字典学习问题:如何删除字典中的一类元素题目:删除字典friends中年龄大于23的friend一个个删除明显达不到考察的目的,所以刚开始我的想法是:利用循环遍历字典中的......
  • 前后端分离项目token自动续期的解决方案
    前言在前后端分离的开发模式下,前端用户登录成功后后端服务会给用户颁发一个jwttoken。前端(如vue)在接收到jwttoken后会将token存储到LocalStorage中。后续每次请求都......
  • 实验2:Open vSwitch虚拟交换机实践
    (一)基础要求执行ovs-vsctlshow命令、以及p0和p1连通性测试的执行结果截图开启MininetCLI并执行pingall命令的截图上述目录下查看OVS流表的命令结果截图wireshark......
  • copy2word
    ;Thisscriptcreatesanewdocumenttoholdstufffromtheclipboard.;Thisscriptcreatesanewdocumenttoholdstufffromtheclipboard.;Usage;-Hig......
  • 学习python-Day56
    今日学习内容序列化类常用字段类和字段参数常见字段类BooleanField BooleanField()NullBooleanField NullBooleanField()CharField CharField(max_length=None,m......