2009年3月26日 星期四

U10 第二個元件(1)──基本Data Model讀寫器

既然稱為基本Data Model,就是希望所有的資料都能夠存放在其中;基本Data Model已經提供存取的方法,接著要為幾種不同的資料類型定義不同的Data Model來對應。常用的基本種類有Text、Table(CSV & JXL)、Properties、XML,XML類型之下另再衍伸Bean、Obejct兩種類型,其繼承關係如下:

在XML Data Model系列裡,首先要支援xpath較重要的定義以便進行節點的搜尋;Bean Data Model的資料格式採用Hibernate通用的XML的定義方法,提供attributes與properties的屬性;Object Data Model則是依據Bean Data Model的class屬性,直接生成設定類別名稱的物件後可以直接轉換成該物件作處理(該物件須繼承自Bean Data Model)。

為了將檔案或字串的內容對應存取Data Model,需要設計對應不同類型的資料處理程式來達成,下圖是我預計支援的各種檔案類型、讀寫類別與Data Model之間的對應。在跨越swimming lane的關聯上都發生一對多或多對一的關係,因此在讀寫時傳入的參數必須各自傳入對應的參數作為識別。

在ModelInterface的功能需求上,目前要能夠從檔案存取、從字串存取與從URL存取,因此定義了對應的方法;另外根據不同的parser要能提供預設的Data Model也定義了對應的方法。(Exception的定義可能有所缺漏,這要到細部設計時才會收集到完整的集合)
  public ModelInterface load(String filename, int type, ModelInterface model);
  public ModelInterface load(URL url, int type, ModelInterface model);
  public boolean save(String filename, int type, ModelInterface model) throws ModelParserExceptionDefault;
  public ModelInterface loadString(String data, int type, ModelInterface model) throws ModelParserExceptionDefault;
  public String saveString(ModelInterface model, int type) throws ModelParserExceptionDefault;
 public ModelInterface getDefaultModel(int type);

在設計時需要根據傳入的parser type轉呼叫對應的程式方法,切換點放置在Implemention、Flow或Action都可以達成功能,然而依據設計原則決定將放在Flow並將Action繼承出各種不同的實作類型。

沒有留言:

張貼留言