依據經驗,各種資料物件的最大集合是XML類型。它擁有name、value、comment、attributes、children等屬性,因此先以protected宣告這些屬性。其中attributes具有key-value的特性,在輸出時又得依序輸出,需要另外設計ListMap物件;children是放置其他data node的集合,為了保持順序而定義為List。
ListMap的實作其實就是同時將List與Map兩種集合包裝在一個物件裡,新增與刪除時都同時維護兩個集合。參考List與Map提供的方法定義好ListMap介面並加以實作完成;ListMap這個集合物件可以在很多時機使用的。(建構時允許指定物件的類別會更有彈性)
完成ListMap與ListMapImpl後,就可以進一步設計ModelInterface;由於這是最基本的Data Model,因此在這裡定義了所有可能的操作方法以應付所有可能的操作。不過沒法子根據需求來定義需要的方法而必須自己思考出全部的應用,會是設計底層物件較困難的地方。所有會變動內部資料的方法都要加上boolean的回傳值,提供呼叫者驗證結果是否成功,這要特別留意一下。
name、value、comment三者都僅是單一的物件,因此只需要提供最基本的getter、setter操作。attributes、chileren都是ListMap集合,對於集合就必須多考慮單一與整體的操作,至少需要以下的操作方法才能算是完整:
getWhole()
setWhole()
clearWhole()
getPartCount()
getPart()
addPart()
removePart()
參考以上方法定義好attributes與children的操作方法後,在ModelAbstract裡實作這些方法並在其中串連到ListMap的方法。
沒有留言:
張貼留言