或許是領(lǐng)域建模的真相稠肘?

我們一提及領(lǐng)域建模,就好像回到了石器時(shí)代萝毛。然而這個(gè)謎題至今還未解決项阴,就好像穴居人的生存方式,我們只能猜測(cè)笆包、推測(cè)以及演繹环揽,卻不能真實(shí)復(fù)現(xiàn)。

Martin Fowler的《分析模式》總結(jié)了諸多領(lǐng)域分析模式庵佣,Eric Evans開創(chuàng)了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的辦法薯演,至于還要老的CRC方法,用例驅(qū)動(dòng)秧了,ICONIX方法以及稍新一些的四色建模法跨扮,都在嘗試領(lǐng)域模型的建構(gòu),結(jié)果仍然差強(qiáng)人意验毡。

這個(gè)問題或許是Mission Impossible衡创,因?yàn)轭I(lǐng)域邏輯其實(shí)是一個(gè)復(fù)雜系統(tǒng),系統(tǒng)中的模型如三體一般互相影響晶通,卻又隱沒在混沌中璃氢,并不真實(shí)清晰地凸顯出來。

在許多項(xiàng)目中狮辽,我多數(shù)采用混合手法進(jìn)行建模一也。CRC、用例驅(qū)動(dòng)喉脖、領(lǐng)域驅(qū)動(dòng)以及四色建模椰苟,什么適合就選擇什么∈鬟矗可是到了最后舆蝴,似乎還是憑借著經(jīng)驗(yàn)在跟著感覺走。沒有教會(huì)領(lǐng)域建模的方法,只有可意會(huì)不可言傳的感覺洁仗。之所以還要提方法层皱,不過是事后諸葛亮而已。

幾年前接觸到CQRS(Command Query Responsibility Separation)模式赠潦,為我隱約打開了一扇窗叫胖,只是窗外的風(fēng)景有些模糊,不敢跳出去她奥。繼而是函數(shù)式思想每時(shí)每刻在顛覆我舊有的設(shè)計(jì)思想臭家,一步一步地侵蝕著OO的陣地。我沒有放棄OO這個(gè)陣地方淤,但我覺得攻守的布局可以豐富些钉赁,不拘一格才能更好地解決敵人(需求)。

最近在使用React和Redux開發(fā)前端携茂,所謂Pure Component以及Redux的reducer思想好像一陣大風(fēng)你踩,刮去了窗外朦朧的霧綃,風(fēng)景變得逐漸清晰起來讳苦。在領(lǐng)域世界的建筑墻上带膜,其實(shí)刻滿了“狀態(tài)”兩個(gè)字!

岔開一筆談?wù)劻硗獾挠∠笤铡N以诹私釪atomic數(shù)據(jù)庫(kù)的架構(gòu)設(shè)計(jì)思想時(shí)膝藕,被這么句話驚呆了:

Datomic將數(shù)據(jù)庫(kù)視為信息系統(tǒng),而信息是一組事實(shí)(facts)咐扭,事實(shí)是指一些已經(jīng)發(fā)生的事情芭挽。鑒于任何人都無法改變過去,這也意味著數(shù)據(jù)庫(kù)將累積這些事實(shí)蝗肪,而非原地進(jìn)行更新袜爪。雖然過去可以遺忘,但卻是不能改變的薛闪。這個(gè)不變性(immutability)帶來了很多重要的架構(gòu)優(yōu)勢(shì)和機(jī)會(huì)辛馆。

醍醐灌頂啊,這不是設(shè)計(jì)豁延,而是哲學(xué)昙篙!

讓我們?cè)傧胂險(xiǎn)ML里面的狀態(tài)圖以及工作流中著名的“狀態(tài)機(jī)(State Machine)”∮沼剑或許我們?cè)诮V泻苌偈褂脿顟B(tài)圖苔可,然而讓我們開開腦洞,你是否覺得:任何業(yè)務(wù)邏輯其實(shí)都可以轉(zhuǎn)換成狀態(tài)的遷移胰苏?

再看看四色建模中的“時(shí)標(biāo)性對(duì)象(moment-interval)”硕蛹,根據(jù)徐昊同學(xué)對(duì)四色建模的解構(gòu),時(shí)標(biāo)性對(duì)象是建模的起點(diǎn)硕并,這類對(duì)象的共同特質(zhì)在于它在時(shí)間線中留下了不可磨滅且不可更改的足跡法焰。根據(jù)Datomic哲學(xué)思想,顯然倔毙,曾經(jīng)存在的這些足跡或許可以湮滅埃仪,但存在的事實(shí)卻不可湮滅。于是陕赃,我們可以對(duì)這些足跡進(jìn)行“追溯”卵蛉,這就是所謂的“Event Sourcing”了。

是什么導(dǎo)致事件(Event)產(chǎn)生的么库?回到CQRS模式傻丝,就是Command;而在用例驅(qū)動(dòng)的語境中诉儒,就是用例(Use Case)葡缰;跳到函數(shù)式思想,則可以視為函數(shù)忱反。當(dāng)然泛释,你也可以認(rèn)為它是對(duì)象的行為,但如果我們將Command以及Event都視為不變的對(duì)象呢温算?

然則怜校,這些概念的本質(zhì)可否認(rèn)為就是“狀態(tài)”世界的各種表征呢?

觸摸到“真相”了嗎注竿?

黑客帝國(guó)中的Morpheus

Morpheus說:

真相是你是一個(gè)奴隸茄茁,尼奧。你巩割,和其他所有人一樣胰丁,生來受奴役……你給關(guān)在一所監(jiān)獄里,這監(jiān)獄你無法聞及喂分,無法品嘗锦庸,無法觸摸。這是你頭腦的監(jiān)獄蒲祈。

會(huì)否我們對(duì)領(lǐng)域世界的思考甘萧,其實(shí)就是頭腦的監(jiān)獄?

柏拉圖提出過一個(gè)著名的洞穴隱喻梆掸。他將不懂哲學(xué)的人比喻為被關(guān)在洞穴中的囚犯扬卷,這些囚犯因?yàn)楸绘i著,所以只能看著眼前的墻壁酸钦,不能轉(zhuǎn)頭怪得。他們的背后生著一堆火,他們只能看到墻上自己和其他東西的影子。他們無法回頭徒恋,不知道有火蚕断,便以為墻上的影子是實(shí)物。某一天入挣,一位囚犯逃離了洞穴亿乳,并發(fā)現(xiàn)了真相,發(fā)現(xiàn)自己以前被影子騙了径筏。如果是哲學(xué)家葛假,他定會(huì)回到洞中將真相告訴大家。但是在別人眼中滋恬,他肯定是傻子聊训。

故而,我無法解答這是否“真相”恢氯,或許我以為找到了魔眨,其實(shí)不過是火堆將領(lǐng)域建模的方法投影到墻上,而我湊巧是那個(gè)被鎖著的囚犯酿雪。

行文至此遏暴,其實(shí)我僅僅提出了問題。如果你覺得我的思緒一片混亂指黎,我會(huì)欣然朋凉,因?yàn)槟阕x懂了,我正是在清晰地描述一路走來混亂的思維過程醋安。我打算信步而行杂彭,搖頭晃腦只是為了觀賞兩邊的風(fēng)景。現(xiàn)在是春天吓揪,路畔的花園粉色桃花白色梨花開了亲怠,或許還有櫻花,因?yàn)榱懵涞囊黄黄ò暝谒镉行┌恰oL(fēng)景太好团秽,我不忍走到終點(diǎn),改天繼續(xù)說說我的思考片段罷叭首。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末习勤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子焙格,更是在濱河造成了極大的恐慌图毕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眷唉,死亡現(xiàn)場(chǎng)離奇詭異予颤,居然都是意外死亡囤官,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門蛤虐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來党饮,“玉大人,你說我怎么就攤上這事笆焰〗倭拢” “怎么了见坑?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵嚷掠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我荞驴,道長(zhǎng)不皆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任熊楼,我火速辦了婚禮霹娄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鲫骗。我一直安慰自己犬耻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布执泰。 她就那樣靜靜地躺著枕磁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪术吝。 梳的紋絲不亂的頭發(fā)上计济,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音排苍,去河邊找鬼沦寂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛淘衙,可吹牛的內(nèi)容都是我干的传藏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼彤守,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼漩氨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起遗增,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤叫惊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后做修,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霍狰,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抡草,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔗坯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片康震。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宾濒,靈堂內(nèi)的尸體忽然破棺而出腿短,到底是詐尸還是另有隱情,我是刑警寧澤绘梦,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布橘忱,位于F島的核電站,受9級(jí)特大地震影響卸奉,放射性物質(zhì)發(fā)生泄漏钝诚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一榄棵、第九天 我趴在偏房一處隱蔽的房頂上張望凝颇。 院中可真熱鬧,春花似錦疹鳄、人聲如沸拧略。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垫蛆。三九已至,卻和暖如春杠茬,著一層夾襖步出監(jiān)牢的瞬間月褥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工瓢喉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宁赤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓栓票,卻偏偏與公主長(zhǎng)得像决左,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子走贪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容