您好,登錄后才能下訂單哦!
這篇文章主要介紹“什么是領域驅動設計”,在日常操作中,相信很多人在什么是領域驅動設計問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”什么是領域驅動設計”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
思考: 理解領域domain,就要從業務說起。
軟件設計中常聽到的一個詞是:業務。日常開發中,也有同事會說,要熟悉業務; xxx對業務不熟悉。 業務是什么呢?
業務應該是一個公司或者一個產品獨有的核心活動、流程。 云計算而言:對外提供池化的計算、存儲、網絡能力。淺顯一點的是:虛擬機的全生命周期管理。
領域是指跟業務強相關的那部分知識,流程。
領域驅動的核心思想是,以業務為核心。向上對接應用層(Application),向下對接IO層(Repositroy)。比起傳統的分層模型來說,它的粒度更細,要求更高了。傳統的分層模型在小型軟件場景下可以正常發揮效用,但大部分人去實施時,經常會出現2個問題。
業務層的邏輯跑到了應用層,應用層非常臃腫;
業務層的邏輯跑到了驅動層(IO層),導致產品對驅動層的依賴過強,對后續重構維護造成災難性的影響。
模型這種知識形式對知識進行了選擇性的簡化和有意的結構化。
領域的核心就是模型。文中對模型的意義進行了定義。這跟大家處理問題時的方法是一樣的,忽略將要矛盾關注主要矛盾。模型大家說的最多的,就是物理模型、數學模型。比如“質點”,現實世界中是不存在的,但這樣的模型對于解釋物理現象,分析物體受力是非常有意義的,沒有質點時,你對一個物體施加一個力,要關心這個力的作用位置,現實世界中作用的位置不同,導致不同的結果。
一個平放的立方塊,對側面靠近底部位置施加一個很大的力,因為力矩的作用,這個立方塊會前后翻轉。不是牛頓第二定律里描述的,它會加速直線向前運行。
這里又要提一個抽象。抽象就是建模的手段。通過舍棄一些不必要細節,得到一個反應我們關注問題的東西,這個東西就是模型了。
模型是設計實現的總結。
模型直接影響設計;
模型是溝通語言;
模型是濃縮的知識。
思考:
模型影響設計 模型的完備性是最終衡量設計是否滿足需求的標準,知識的傳遞應該是:需求變動影響模型,模型變動影響設計。技術專家一般不會直接去看代碼判斷你的實現是否有問題,但如果給出了模型,專家可以快速看出你的設計是否存在問題。
模型是溝通語言 模型是設計編碼溝通的基礎,可以把問題局限在大家都熟悉的一個范圍中,提高溝通的效率。
模型是濃縮的知識 這一點與2的描述有點重復。感覺可以合在一起。
補充: 模型可以幫助新加入的成員,快速的理解設計。看到很多開源項目都會在文檔中描述設計,但很多項目沒有一個合適的模型定義,導致理解與上手比較困難。
軟件的核心是提供為用戶解決領域相關問題的能力。
用白話說,就是為了實現需求。
這部分作者提出了一個比較普遍的問題:大部分編碼人員對于建模技巧和業務知識沒有興趣,這恰恰是實現實現用戶需求最核心的技術要求。 進一步的原因是“技術人員喜歡比較直接的,能提升自己技術水平的問題。”
這個原因有2層意思。一個是普通的心理現象,人都喜歡直接看得見的東西;比如年輕時喜歡說愛情,非誰誰不娶(嫁),但最終面對現實時,還是錢重要。因為愛情是抽象的,錢是具象的可以看得到的。對于建模這種抽象的東西,完全沒有查一個BUG,學習一門新語言來得實在。
另外一個是,當你想跳槽時。你說你會領域建模,可能面試官對于這部分也沒有什么積累,不能判斷出你的技術水平;即使是ta恰好也懂,在面試的時間內也很難考查出你的領域能力有多強。相反,問問一些語言的特性,或者操作系統相關的基礎知識會比較容易判斷你的水平。也就是說抽象的東西沒有市場。
大多數混亂的軟件領域其實是一項充滿樂趣的技術挑戰。 創建一個克服這些復雜性的易懂模型會帶來巨大的成就感。
到此,關于“什么是領域驅動設計”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。