其中,代碼是固定不變的,流水號會自動遞增,日期一般是當前系統日期(固定格式,比如YYYYMM、YYYYMMDD),另外當日期變化時再重置流水號。寫到這裡,我們終於找到了一個重要概念:編號規則(Number Rule)。編號規則定義了多個連續的段(Number Part),各段組合起來就生成了一個編號。正如下圖所示:
圖2 分析模型
在實際的應用當中,流水號的規則可能很復雜,也許要支持數字(如‘0000’-‘9999’)、英文字母(如‘A' - 'Z'),甚至是一些自定義的字符(如‘0’-‘Z’)的組合。既然這樣,我們可以提取一個抽象概念:序列(Sequence)。如在卡號規則當中規定遇4跳過等等就表示卡號是由除4以外的其他阿拉伯數字組成的序列。{ 序列可以考慮用任意進制的計算器來實現:) }
2. 領域模型
結合上面的領域知識,我設計了新的領域模型:
圖2 編號規則領域模型(V2)