代码的重构

发布于:2024-04-09 ⋅ 阅读:(52) ⋅ 点赞:(0)

代码的重构


学习于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();
        }

    }