为什么没有Cell.setAlive()?
为什么不是在Cell提供
setAlive(boolean)
函数?而是采用复杂的die()、reborn()两个函数?
上次博客补图(代码关系图:
cell修改之后的代码:
//import java.awt.Color;//测试代码
import java.awt.Graphics;
public class Cell {
private boolean alive = false;
// public void die() { alive = false; }
// public void reborn() { alive = true; }
public void setAlive(Boolean b)
{
if(b) {
alive=true;
}
else
{
alive=false;
}
}
public boolean isAlive() { return alive; }
public void draw(Graphics g, int x, int y, int size) {
g.drawRect(x, y, size, size);//x y是坐标,size是大小,
//画一个位于x,y位置上,底色百色的色块
if ( alive ) //如果存活,填充颜色,默认为黑色
{
// g.setColor(Color.yellow);//测试代码
g.fillRect(x, y, size, size);//给色块填充颜色,参数与drawRect一样
}
}
}
CellMechine修改之前的代码:
if ( cell.isAlive() ) //如果细胞存活
{
if ( numOfLive <2 || numOfLive >3 )
{
cell.die(); //周围存活数量小于2大于3,细胞死亡
System.out.print("die");//意思是,周围细胞为2或3的时候不用死
}
}
else if ( numOfLive == 3 ) //如果细胞是死亡的,周围存活数量为3
{
cell.reborn();//细胞可以复活
System.out.print("reborn");
}
System.out.println();
CellMechine修改之后的代码:
if ( cell.isAlive() ) //如果细胞存活
{
if ( numOfLive <2 || numOfLive >3 )
{
cell.setAlive(false);
System.out.print("die");//意思是,周围细胞为2或3的时候不用死
}
}
else if ( numOfLive == 3 ) //如果细胞是死亡的,周围存活数量为3
{
cell.setAlive(true);
System.out.print("reborn");
}
System.out.println();
这样的修改对程序本身并没哟用什么问题,经过测试,运行也正常。
但是他有以下的的缺点:
1.代码量增多了,在一个函数里面需要增加 if-else 结构来判断
2.需要额外传入参数
3.可读性变差,原先的代码在不知道函数主题,看函数名就能知道意思,但是更改过的代码需要按F3去读一遍函数