代码的重构

代码的重构


学习于bilibili 春娇与志明

1. 代码的重构


将之前的代码进行封装和重构
方便之后的阅读和维护
故将代码封装,对外提供一个统一访问的入口

2. 创建牌相关工具类


在utill包中创建BrandUtil.java类

package com.zy.utill;

/*
工具类
提供创建牌相关的一些公共算法
 */

import com.zy.model.Brand;

import java.util.Random;

//随机获取牌名称
public class BrandUtil {
    public static Random random = new Random();

    //存储所有牌的名称
    public static String [] brandNames = {
            "刷子","剪刀","叉子","手套","水桶","火",
            "玉米","球","瓶子","白菜","稻草","肉腿",
            "胡萝卜","苹果","铃铛","青草"
    };
    //每次调用都随机获取一个牌的名称
    public static String getBrandName(){
        int randomIndex = random.nextInt(brandNames.length);
        return brandNames[randomIndex];
    }



    //创建随机牌的数组时
    public Brand[] buildBrands(Integer capacity){

        Brand[] brands = new Brand[capacity];//数组容量等于图层容量

        //遍历循环
        //每次产生3张,保证可以消除
        //容量为3的倍数
        for (int i = 0; i < brands.length; i = i + 3) {
            String randonBrandName = getBrandName();//每次循环获取牌的名称

            Brand brand1 = new Brand(randonBrandName);
            Brand brand2 = new Brand(randonBrandName);
            Brand brand3 = new Brand(randonBrandName);

            brands[i] = brand1;
            brands[i+1] = brand2;
            brands[i+2] = brand3;
        }




        for (int i = 0; i < brands.length; i++) {
            //当前位置A的变量拿到
            Brand brandA = brands[i];
            //交换位置B
            int randomIndex = random.nextInt(brands.length);//获得0到长度大小的随机整数
            Brand brandB = brands[randomIndex];
            //交换
            Brand temp = brandA;
            brands[i] = brandB;
            brands[randomIndex] = temp;
        }
        return brands;
    }


}

3. 创建图层相关工具类


在utill包中创建LayerUtil.java类

package com.zy.util;

import com.zy.model.Brand;
import com.zy.model.Cell;
import com.zy.model.Layer;

public class LayerUtil {
    public static Layer build(Integer rowNum,Integer colNum){

        Layer layer = null;//容量为36的二维数组图层
        try {
            layer = new Layer(rowNum,colNum);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

        Brand[] brands = BrandUtil.buildBrands(layer.getCapacity());//数组容量等于图层容量

        int flag = 0;

        Cell[][] cells = layer.getCells();
        for (int row = 0; row < cells.length; row++) {
            for (int col = 0; col < cells[row].length; col++) {
                //  System.out.println(row + "-" + col);
                Cell cell = new Cell();
                cell.setState(1);
                cell.setBrand(brands[flag++]);

                cells[row][col] = cell;//把之前空的图层设置了值

            }
        }

 //       layer.showCells();
        return layer;
    }
}

4. 修改LayerUtil.java


在LayerUtil.java中添加

 public void showCells(){
        for (int row = 0; row < cells.length; row++) {
            for (int col = 0; col < cells[row].length; col++) {
                Brand brands1 = cells[row][col].getBrand();
                System.out.print(brands1.getName() + " ");
            }
            System.out.println();
        }

    }

相关推荐

  1. 代码重构

    2024-04-06 04:16:05       37 阅读
  2. 代码重构实践分享

    2024-04-06 04:16:05       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-06 04:16:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 04:16:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 04:16:05       82 阅读
  4. Python语言-面向对象

    2024-04-06 04:16:05       91 阅读

热门阅读

  1. SQL语句每日一练七

    2024-04-06 04:16:05       31 阅读
  2. 【C++】每日一题 121 买卖股票的最佳时机

    2024-04-06 04:16:05       35 阅读
  3. 面试算法-142-找到字符串中所有字母异位词

    2024-04-06 04:16:05       35 阅读
  4. TS学习02 面向对象 类、封装继承、接口、泛型

    2024-04-06 04:16:05       32 阅读
  5. 小组分享内容二:Jsoup部分(未完待续)

    2024-04-06 04:16:05       34 阅读
  6. MYSQL-----多表查询详解,配有练习讲解

    2024-04-06 04:16:05       37 阅读
  7. Django --静态文件

    2024-04-06 04:16:05       32 阅读
  8. ubunu18.04源码安装opencv 4.8.0

    2024-04-06 04:16:05       38 阅读