2014-03-26 61 views
3

我有對象模型,它描述了工人的指令:如何重構我的模型?

  • 轉至位置
  • 獲得一個項目的
  • 轉到另一個位置
  • 接另一個項目
  • ..... ...
  • 完成工作

在我的應用我甲腎上腺素編輯了這份指示清單,以指導工人的工作。

指令的類型差別很大,這就是爲什麼描述指令所需的數據可能不同。對於更改位置,我只需要位置編號獲取物品我還需要物料編號,數量和物料名稱,以及位置編號。

所以我的模型看起來像這樣:

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

所以我在這裏我描述不同的實體與一個模型的情況。

我應該忍受嗎,還是有辦法消除重複?

我想要的是保持將所有指令存儲在列表中的能力,但要使模型更加乾淨。

+0

如果您想消除重複,您需要重寫hashcode和equals方法(可以使用IDE或使用lombok進行註釋來生成)。然後使用'HashSet'。 – Athanor

回答

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

將通用信息抽取到抽象類中,併爲擴展抽象類的特定類型的指令創建類。

您的抽象類可以提供常見操作的一些常用方法和/或定義子類需要實現的方法。

這可以給你一個乾淨的界面,在你的列表中使用。

看看polymorphism in Java