領域模型的一些基本概念

2022-01-22 23:22:18 字數 1277 閱讀 8749

我這裡簡單的用一句話概括什麼是model:

model是對現實的描述,它可以被開發人員、業務分析師、客戶所理解,它不是uml圖或者其他任何以開發者為中心描述domain的方式。

實體(entity)

實體是這樣乙個物件:由它的屬性組合唯一標識以及有定義好的生命週期。通常實體包含乙個id或key屬性,用於唯一標識它。

兩個具有相同型別和相同識別符號的實體被認為是相同的實體。

在line of business(lob)應用程式中典型的實體有:customer,product,order,supplier等等。拿乙個電子商務程式作為例子,通過唯一識別符號來區分customer是非常重要的。

在現實生活中,我們通常使用人可讀或可理解的識別符號處理實體。這樣的識別符號也稱為自然鍵(natural keys)。典型的例子有:美國公民的社會安全碼(ssn),產品的產品**,銀行賬戶號碼,訂單的訂單號等等。

在程式中使用人工識別符號唯一標識實體很重要。這樣的人工識別符號也稱為**鍵(surrogate keys)。這個識別符號的其他定義是持久化物件識別符號(poi)。

為什麼不只使用自然鍵呢?我們都知道,在實際生活中,由於這樣那樣的原因,自然鍵可能發生改變。一件產品可能接受乙個新的產品**或者ssn被重新發放。然而,在程式中,我們需要在實體的整個生命週期都保持不變的識別符號,使用**鍵可以得到保證。

值物件(value object)

在model中,物件可能不需要定義生命週期以及不需要通過id或key唯一標識而存在。這種型別的物件稱為值物件(value objects)。相同型別的值物件的兩個例項,如果它們的屬性都相同就說它們是相同的。

上面值物件的定義帶來的直接影響是值物件不可變。也就是說,一旦定義了值物件,就不能再修改了。

雖然在銀行應用中,賬戶是乙個實體,需要使用id唯一標識,但是也存在money的概念,它是由值和貨幣符號組成的物件。這個money物件正是值物件的乙個典型例子。兩個有相同數值和相同貨幣符號的money物件是相同的,它們之間沒有區別。乙個物件可以由另乙個物件替換,不會有其他的影響。

其他值物件的例子:

person實體的name。name值物件由person物件的surname,given name和middle name組成。

gis應用中的地理座標。這個值物件由經緯座標的值組成。

比色法應用中的color。顏色物件由red,green,blue和alpha通道的值組成。

值物件從不單獨存在。在model中,它們總是作為實體的一部分。如前面提到的,銀行賬號有乙個balance屬性,它是money型別的。

C 一些基本概念

建構函式的作用是對物件本身做初始化工作,也就是給使用者提供初始化類中成員變數的一種方式。析構函式是釋放物件執行期間所申請的資源。函式的過載,過載構成的條件 函式的引數型別不同 引數個數不同,才能構成函式的過載 在乙個類中 注意,只有函式的返回型別不同是不能構成函式的過載。在函式過載時,要注意函式帶有...

linux OS一些基本概念

1.什麼是os?好簡單好x的問題,可是如果真的要自己用稍微官方稍微正規的語言或文本來回答,我真的能回答清楚嗎?好吧,我先來用自己的語言來回答。再去找點官方的定義。我自己的回答 os就是乙個可以管理並且相對合理分配計算機資源的軟體。官方回答 作業系統 英語 operating system,簡稱os ...

Thread一些基本概念

1 實現執行緒的三種方式 extends thread implements runnable implements callable new futuretask callable new thread futuretask 2 執行緒讓步yield 讓執行緒由執行狀態變為就緒狀態,不會釋放鎖 3...