我如何重构我的模型?

时间:2014-03-26 09:37:33

标签: java oop

我有对象模型,它描述了工人的说明:

  • 转到位置
  • 获取项目
  • 转到其他位置
  • 选择另一个项目
  • ........
  • 完成工作

在我的应用程序中,我需要一份指示清单,以指导工作人员。

指令的类型非常不同,这就是描述指令所需的数据可能不同的原因。要更改位置,我只需要位置ID 来获取项目我还需要项目ID,数量和项目名称以及位置ID。

所以我的模型看起来像这样:

public class Instruction{
    int locationId;
    int itemId;
    String itemName;
    String quanity;
    Type itemType; // can be Type.GET_ITEM, Type.CHANGE_LOCATION etc.
}

所以我的情况是用一个模型描述不同的实体。

我应该忍受这种情况,还是有办法消除重复?

我想要的是保持将所有指令存储在列表中的能力,但是要使模型更加干净。

2 个答案:

答案 0 :(得分:2)

这样的事情怎么样?

interface Instruction {}

class LocationInstruction implements Instruction { 
    int locationId;
    public String toString() { return "Go to the location " + locationId; } ;
}

class ItemInstruction implements Instruction {
    Item item;
    public String toString() { return "Pick item " + item.toString(); } ;
}

class Item {
  int itemId;
  ...
  public String toString() { return "Item{itemId: "+itemId+"}" ;}
}

class Actions {
  public List<Instruction> getInstructions();
}

答案 1 :(得分:1)

将公共信息提取到抽象类中,并为扩展抽象类的特定类型的指令创建类。

您的抽象类可以提供一些常用操作的常用方法和/或定义子类需要实现的方法。

这可以为您提供一个干净的界面,可以在您的列表中使用。

看看polymorphism in Java