程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 領域驅動設計實踐——流水號生成器(下)(5)

領域驅動設計實踐——流水號生成器(下)(5)

編輯:Delphi

3. 業務應用

為了實現具體的業務應用,我們還需要做兩件事:

1. 編號規則的持久化(一般使用XML,暫省略)

2. 編號的獲取和更新

我們可以在業務層定義了下面兩個接口,方便供客戶使用:

Code

1 INumberGenerator = interface
2  function NextNumber: string;
3 end

Code

1 INumberCalculator = interface
2  procedure Validate(const number: string);
3  function Compare(const startNumber, endNumber: string): Integer;
4  function GetCount(const startNumber, endNumber: string): Int64;
5  function GetEndNumber(const startNumber: string; count: Int64): string;
6 end

我們只需要通過訪問一個全局的Factory/Registry來獲得一個當前Context的INumberGenerator實例,然後調用NextNumber方法就可以獲取編號。其實現可參考:

Code

1 TDBNumberGenerator = class(TInterfacedObject, INumberGenerator)
2 private
3  fRule: TNumberRule;
4  fDataSet: TDataSet;
5  fTypeID: string;
6 public
7  { 訪問數據庫的編號表,根據TypeID進行行鎖定(悲觀鎖),讀取當前可用的編號後,調用fRule的NextNumber,把結果更新回去 }
8  function NextNumber: string;
9 end

INumberCalculator接口主要針對那些手工輸入編號或需要進行統計編號數量的應用(比如,輸入開始卡號和結束卡號,自動計算數量)。

最後,期待大家的批評和指點。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved