我有对象模型,它描述了工人的说明:
在我的应用程序中,我需要一份指示清单,以指导工作人员。
指令的类型非常不同,这就是描述指令所需的数据可能不同的原因。要更改位置,我只需要位置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.
}
所以我的情况是用一个模型描述不同的实体。
我应该忍受这种情况,还是有办法消除重复?
我想要的是保持将所有指令存储在列表中的能力,但是要使模型更加干净。
答案 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)
将公共信息提取到抽象类中,并为扩展抽象类的特定类型的指令创建类。
您的抽象类可以提供一些常用操作的常用方法和/或定义子类需要实现的方法。
这可以为您提供一个干净的界面,可以在您的列表中使用。