VDB 理論與設計 — Ringle Lai;本次範例實現 — Steve Chou:編排與修正 — Kenming Wang。


虛擬DB(Virtual DB) 並非特定平台的實做技術,其主要特性如下:

針對某一個特定的任務,將該任務所需的相關資料由各種不同的資料來源取得至 記憶體(Memory)中,讓相關的處理程式可以「就近處理」這些資料;其與資料來源的實體儲存格式無關,且在取得資料後,應該保持與資料來源「離線(offline)」的方式來進行存取,而 虛擬DB 只提供資料的存取,不負責進行運算。

也因此,Java 世界中的 Value Object 其實也是「虛擬DB」的一種體現;至於在.NET Solution中,最適宜表現虛擬DB的技術就是 ADO .NET 中的「DataSet」技術。而 Business Object 與 Value Object 最大的差別在於 Business Object必須要有「企業運算邏輯(Business Logic)」。舉例而言,下圖就是一個典型的Business Object的類別圖:

典型的 Business Object 類別圖
(點擊圖片鏈接看原圖)圖、典型的 Business Object 類別圖

根據前述的 Business Object 的定義,我們可以發覺在上圖中,Business Objcet只有兩個,分別是:

  • Order Class – 因為其有一個【CalculateTotalAmount】的 Business Method;
  • OrderItems Class – 因為其有一個【CalculateSubtotal】的 Business Method。

而在該圖中,Product Class 因為只有一個 Getter 的 Method,因此可以將之視為 Value Object,至於 OrderItems 也有一個【Quantity】的屬性,因此也具備了 Value Object 的性質。

一般來說,Business Object其實通常具備了三個主要特質,分別是:

  • 資料面 – 這通常會以【屬性(attributes)】來呈現。
  • 企業邏輯 – 這通常是除了 Getter 與 Setter 之外的 Method。
  • 結構面 – 也就是類別間的靜態關係(包括 Association、Aggregation、Generalization 以及Dependency 等)。

然而,當我們有了 虛擬DB 的概念後,資料面的部分可以交由 虛擬DB 代勞,因此,Business Object就只存在了企業邏輯以及結構面。

我們可以利用UML的 Composite Structure Diagram(複合結構圖) 來表達 虛擬DB 與 Business Object 兩類元件的關係:

虛擬DB 與 Business Object 間的關係
(點擊圖片鏈接看原圖)圖、虛擬DB 與 Business Object 間的關係