DDD 領域驅動設計 「臆想」中的實體和值物件

2021-09-06 19:46:58 字數 2864 閱讀 3128

其他博文:

扯淡開始:

宇宙只是介面,科技永遠觸控不到世界的本原。

前段時間剛看完這部電影,然後無意間在園中,發現了一位園友寫的一篇觀後感,說實話,當時看過這篇博文之後只是有乙個印象,並沒有深入的去思考一些東西,上面的那段話就來自園友的這篇博文,現在仔細讀起來確實很有深意,當然這只是對某一部分人來說,有的人看到也許會很不以為然。

和網上很多「觀後感」所不同的是,大多數對於這部電影的**分析都是針對科學、宇宙、相對論、n 維空間、劇情等等,比如**電影中的黑洞、蟲洞描述的是否正確?n 維空間具體是怎樣的?「時間穿越」是否真的存在?電影劇情的銜接是否合理?。。。而這位園友的觀後感非常」另類「,結合自己的理解,我大致再總結一下:

小的時候,我經常在樹下觀察螞蟻活動,看他們如何搬運食物,如何搭建巢穴等等,但他們卻意識不到我的存在,而我卻能觀察他們的一舉一動,或者他們也意識到我的存在了,只不過我不知道而已,又或者他們覺得我很另類,就像電影中墨菲所說「書架中的 ghost」,ghost 只不過是我們對一些不理解事物的統稱,也許螞蟻眼中的我也是「ghost」吧,但細想一下,如果我們是螞蟻呢?是不是也有像我一樣觀察螞蟻的「我」呢?凡事都有相對性,只不過對一些事物我們不理解罷了。

把現實世界看作是與自然的「操作介面」,這一點內容我想也只有程式設計師能夠想的到吧,但這一部分的想象確實有點太天馬星空,不是一般人所能夠理解的,但後面的兩點內容對我觸動很大,或者引發了與我的一些共鳴,上面也曾說過,人是很神奇的動物,因為人有思想,有思考的能力,有語言的能力等等,但最要的是人有情感,人類在不斷的進行探索宇宙,但對於自身的探索卻始終有限,就像電影中墨菲所說的「ghost」,其實就是她未來的父親,但不管過去與未來,父親對女兒的愛是永恆不變的,這個話題就到這,說多了容易「爛」。

一切都是資訊,就像我們玩的遊戲,只不過是我們敲出的一行行**,但表現出來卻那麼「真實」,引用園友博文中的一段話:

如果我做科幻片的編劇,我會讓男主角歷經千辛萬苦,最後發現自己是一串 0 或 1 的數字。

反過來思考我們人類自身,從某一角度看待,我們何嘗不是由「資訊」組成的呢?比如生物學中的 dna、基因、細胞等,這些都可以稱之為「資訊」,只不過表現方式不同罷了,不同的生物由不同的基因序列組成,但都屬於基因,抽離出來它們本質上都是一樣的,就像遊戲中不同的人物,都是由 0 或 1 組成,只不過所不同的是,0 和 1 的數量和排序不同,但本質都是一樣的,都是資訊,世間萬物抽離出來其實都是原子組成,但神奇的是組成出來的不同事物卻完全不同,更為神奇的是人類本身,因為他可以思考他自身是由什麼組成的。

由電影所引發的思考就不扯了,因為越扯越遠,越扯越離譜。

曾在解道中看到有人這樣描述實體和值物件之間的關係:

這個世界是事實和事物的集合。

這句話充分體現了實體物件和值物件的關係。我們所關心的事是事實,他是實體。而我們所關心的事實是由 0 到 n 個事物組成的集合。

如果覺得抽象的話,請用 dna 來理解每個鹼基( dna 由「jian」基組成,具體哪個"jian"忘了)就是值物件,而拼湊成的 dna 為實體,而且這個實體是唯一的,我們把他當作每乙個人。

有乙個大前提,就是當你關心到人的時候,這個世界上每乙個人就是實體,而組成這個世界上所有的人的「jian」基就是值物件了。

那這麼看來每乙個人(事實)都由「jian」基(事物)所組成了。

其實這段描述資訊量很大,簡單說一下我所理解的,實體和值物件的區分是在「關注點」確定的情況下,也就是他所說的「大前提」,在這個大前提下,值物件其實就是資訊,而實體就是由資訊組成的一種事物,實體與實體之間的傳遞就是資訊的傳遞,如果大前提變化了,所有的一切都是可以「逆向」的,也就是說實體可以變為值物件,值物件也可以變為實體,這種情況在現實生活中也很普遍,人口普查就是乙個最好的示例。

對待一種事物,我所關心它,也就是說我必須先要區分它,然後接下來才能進行針對它的一些操作,這個「它」就是實體,那對於組成它,或者說描述它的一些資訊,都可以看作是值物件,比如乙個人的人名,我只需要知道這個值就可以了,但對於它所關聯的物件,可以看作是實體,也可以看作是值物件,那具體怎麼進行區分呢?主要看我關不關心「它」關聯的物件,如果關心,那就是實體,如果不關心,那就是值物件。

在之前的一篇博文中,我常提到「雙胞胎」的例子,我和我雙胞胎哥哥出生在一所醫院中,這個醫院據說是「雙胞胎的搖籃」,什麼意思?因為出生在這個醫院的有 80% 是雙胞胎(有點扯),醫院有個慣例,就是要對雙胞胎的出生情況進行調查,比如要對雙胞胎父母、以及出生地調查,用來計算出哪個地方出生的雙胞胎最多,更具體的是,比如我父親那個地方雙胞胎的父親或母親比例,對於我和我雙胞胎哥哥來說,醫院就要根據我倆來調查我父母,在這個調查的前提下,其實我父母表現出來的就是值物件,因為醫院只需要知道這對雙胞胎父母的所在地就可以了,不需要知道這個父母具體是哪個?也就是說,在這個調查過程中,醫院並不關心這個,對於他們來說,雙胞胎的父母表現出來的只不過是一堆「資訊」,但前提是這個「調查系統」,這是醫院所關心的。對於我和我雙胞胎哥倆來說,就不是這樣了,對於我們的父母,我們所關心的就不僅僅是一堆「資訊」,我們需要確定哪個是我們的父母?這個非常重要。

關心點的不同,就會造成資訊表現方式的不同。

當某一實體確定的情況下,比如在某一場景中,把人設計為實體,然後再思考,與他關聯的一些物件是設計為實體?還是設計為值物件?如果這個不能確定的話,就要想一想,在這個場景中,我關不關心它?如果關心的話,就要設計為實體,如果不關心,就要設計為值物件,對於同一關聯物件,所關心的不同,最後設計的也會不同。

凡事無絕對,就扯到這!

DDD領域驅動設計

公司裡面敏捷專案要講ddd領域驅動設計,加緊學習了一下,找了一些資料研究。eric evans的 domain driven design領域驅動設計 簡稱ddd,evans ddd是一套綜合軟體系統分析和設計的物件導向建模方法,本站jdon.com是國內公開最早討論ddd 之一,可訂閱 ddd專題...

DDD(領域驅動設計)

domain 領域 driven 驅動 design 設計 由eric evans最先提出,目的是對軟體所涉及到的領域進行建模,以應對系統規模過大時引起的軟體複雜性的問題。整個過程大概是這樣 開發團隊和領域專家一起通過 通用語言 ubiquitous language 去理解和消化領域知識,從領域知...

DDD領域驅動設計

極客時間學習筆記 為什麼微服務設計的時候需要ddd?1 軟體架構模式演進的三個階段 第一階段是單機架構 第二階段是集中式架構 第三階段是分布式微服務架構 2 在單機和集中式架構這兩種模式下,軟體無法快速響應需求和業務的迅速變化,最終錯失發展良機。3 微服務拆分困境產生的根本原因就是不知道業務或者微服...