Replace Array with Object(以对象取代数组)

  1. String[] row = new String[3];
  2. row[0] = "Liverpool";
  3. row[1] = "15";

修改为:

  1. Performance row = new Performance();
  2. row.setName("Liverpool");
  3. row.setWins("15");

做法

  • 新建一个类表示数组所拥有的信息,并在其中以一个public字段保存原先的数组

  • 修改数组的所有用户,让它们改用新类的实例

  • 编译,测试

  • 逐一为数组元素添加取值/设值函数。根据元素的用途,为这些访问函数命名。修改客户端代码,让它们通过访问函数取用数组内的元素。每次修改后,编译并测试

  • 当所有对数组的直接访问都转而调用访问函数后,将新类中保存该数组的字段声明为private

  • 编译

  • 对于数组内的每一个元素,在新类重创建一个类型相当的字段。修改该元素的访问函数,令它改用上述的新建字段

  • 每修改一个元素,编译并测试

  • 数组的所有元素都有了相应字段之后,删除该数组

范例

  1. String[] row = new String[3];
  2. row[0] = "Liverpool";
  3. row[1] = "15";
  4. String name = row[0];
  5. int wins = Integer.parseInt(row[1]);
  1. Performance row = new Performance();
  2. row._data[0] = "Liverpool";
  3. row._data[1] = "15";
  4. String name = row._data[0];
  5. int wins = Integer.parseInt(row._data[1]);
  6. class Performance{
  7. public String[] _data = new String[3];
  8. }
  1. class Performance...
  2. public String getName(){
  3. return _data[0];
  4. }
  5. public void setName(String arg){
  6. _data[0] = arg;
  7. }
  8. }
  9. row.setName("Liverpool");
  10. row._data[1] = "15";
  11. String name = row.getName();
  12. int wins = Integer.parseInt(row._data[1]);