曙海教學(xué)優(yōu)勢(shì)
本課程,秉承二十一年積累的教學(xué)品質(zhì),以項(xiàng)目實(shí)現(xiàn)為導(dǎo)向,面向企事業(yè)項(xiàng)目實(shí)際需要,老師將會(huì)與您分享設(shè)計(jì)的全流程以及工具的綜合使用經(jīng)驗(yàn)、技巧。課程可定制,線上/線下/上門(mén)皆可,熱線:4008699035。
曙海培訓(xùn)的課程培養(yǎng)了大批受企業(yè)歡迎的工程師。大批企業(yè)和曙海
建立了良好的合作關(guān)系,合作企業(yè)30萬(wàn)+。曙海培訓(xùn)的課程在業(yè)內(nèi)有著響亮的知名度。
課程大綱
? ? ? ? ? 軟件設(shè)計(jì)原則、思路或最佳實(shí)踐 |
|
? |
一、???????? ??企業(yè)級(jí)架構(gòu)設(shè)計(jì)概述 1.?認(rèn)識(shí)分層架構(gòu) 2.?分層架構(gòu)的演化 3.?領(lǐng)域驅(qū)動(dòng)架構(gòu)的演進(jìn) 4.?界限上下文與架構(gòu) 5.?六邊形架構(gòu) 6.?端口與適配器 7.?整潔架構(gòu) 8.?CQRS架構(gòu) 9.?在CQRS中處理具有最終一致性的查詢(xún)模型 10.事件溯源 EventSouring 11.使用樂(lè)觀鎖處理并發(fā)更新 12.事件溯源和發(fā)布事件 13.冪等方式處理消息 14.使用快照提升性能 15.管道與過(guò)濾器 16.SAGA(消息驅(qū)動(dòng)事務(wù)) 17.協(xié)同式與編排式 18.SAGA下實(shí)現(xiàn)隔離 |
軟件設(shè)計(jì)中的核心原則 ? SOLID |
|
? |
二、單一職責(zé)原則 1.?次時(shí)代租車(chē)服務(wù)終端 (ARCS)的初步設(shè)計(jì) 2.?用例 (UseCase) 的作用 – 劃分邊界及概覽 3.?SRP的設(shè)計(jì)誤區(qū) 4.?重構(gòu)至 SRP 的方法1:提取類(lèi) 5.?重構(gòu)至 SRP 的方法2:Proxy模式 6.?前端代碼 SRP重構(gòu):投票組件 7.?過(guò)程性代碼的 SRP 違反直覺(jué)的真相:性能優(yōu)化的步驟 |
? |
三、開(kāi)放封閉原則 1.?代碼中的接線板是什么? 2.?編程價(jià)值觀 – 溝通,簡(jiǎn)單,靈活 3.?如何做到對(duì)擴(kuò)展開(kāi)放,對(duì)修改封閉 4.?次時(shí)代租車(chē)服務(wù)終端 (ARCS)的促銷(xiāo)需求 5.?笨拙的促銷(xiāo)實(shí)現(xiàn) 6.?如何不修改代碼而改變它的行為 7.?最簡(jiǎn)單的 OCP實(shí)現(xiàn) – 策略模式 8.?前端代碼重構(gòu):拆分復(fù)雜表達(dá)式 敏捷開(kāi)發(fā)的精髓 – 只被第一顆子彈擊中 |
? |
四、里氏替換原則 1.?什么才是好的繼承關(guān)系 2.?子類(lèi)為什么要能透明的替換基類(lèi) 3.?次時(shí)代租車(chē)服務(wù)終端 (ARCS)的新需求 – 電動(dòng)轎車(chē)費(fèi)用計(jì)算 4.?白盒復(fù)用 還是 黑盒復(fù)用 5.?IS-A的精髓:針對(duì)屬性還是針對(duì)行為 6.?契約式設(shè)計(jì)繼承體系 7.?重構(gòu)方法:提升為兄弟類(lèi) 8.?前端代碼重構(gòu):抽取函數(shù) 9.?如何才能讓 次時(shí)代租車(chē)服務(wù)終端 (ARCS)的代碼符合 LSP 這樣做我們可能會(huì)引入什么新的問(wèn)題? |
? |
五、接口隔離原則 1.?接口“變胖”的問(wèn)題 – 接口污染 2.?佳能一體機(jī)的遺留接口問(wèn)題 3.?如何實(shí)現(xiàn)接口分離 – 適配器模式 4.?類(lèi)適配器 – 多繼承 5.?對(duì)象適配器 – 委托 6.?使用單元測(cè)試來(lái)發(fā)現(xiàn)問(wèn)題 7.?前端代碼重構(gòu):使用模板方法重新組織邏輯 8.?次時(shí)代租車(chē)服務(wù)終端 (ARCS)在接口劃分上的問(wèn)題 9.?如何簡(jiǎn)化復(fù)雜的邏輯 10.???????如何使用模板方法分離抽象與具體 案例:ATM機(jī)接口設(shè)計(jì)的演化 |
? |
六、依賴(lài)倒置原則 1.?結(jié)構(gòu)化設(shè)計(jì)理念的問(wèn)題 2.?對(duì)象化設(shè)計(jì)理念 3.?依賴(lài)倒置到底倒置了什么 4.?如何分離關(guān)注點(diǎn) 5.?DI-依賴(lài)注入解決的問(wèn)題:講對(duì)象的創(chuàng)建與使用分離 案例:消息隊(duì)列設(shè)計(jì)的演化 |
領(lǐng)域?qū)拥脑O(shè)計(jì)與實(shí)踐 |
|
? |
七、實(shí)體 – 數(shù)據(jù)容器還是行為載體 6.?貧血模型 7.?如何避免貧血,實(shí)體與領(lǐng)域服務(wù)之間的分寸 8.?唯一標(biāo)識(shí) 9.?委派標(biāo)識(shí) 10.案例:實(shí)現(xiàn)實(shí)體層超類(lèi)型(Layer Supertype) 11.實(shí)戰(zhàn) -任務(wù)分配執(zhí)行系統(tǒng) 實(shí)體行為歸屬甄別 |
? |
八、值對(duì)象 – 性能提升小幫手 1.?什么是值對(duì)象 2.?值對(duì)象的特征 3.?為什么值對(duì)象這么容易被忽略 4.?案例:地址建模與值對(duì)象 5.?案例:實(shí)現(xiàn)值對(duì)象層超類(lèi)型 |
? |
九、聚合 – 比類(lèi)更高一層的封裝 1.?聚合設(shè)計(jì)原則 2.?聚合設(shè)計(jì)的過(guò)程 3.?聚合的一致性邊界 4.?一個(gè)事務(wù)中只處理一個(gè)聚合 5.?UML?中的聚合 與 DDD 中的聚合 6.?聚合內(nèi)實(shí)現(xiàn)事務(wù)一致性 7.?聚合外實(shí)現(xiàn)最終一致性 8.?案例:更新訂單狀態(tài)與庫(kù)存扣減 Version 1.0 9.?案例:更新訂單狀態(tài)與庫(kù)存扣減 Version 2.0 10.聚合設(shè)計(jì)的注意點(diǎn) |
服務(wù)層的設(shè)計(jì)與實(shí)踐 |
|
? |
十、微服務(wù)的入口 - 應(yīng)用服務(wù) 1.?用例 (Use Case) 與應(yīng)用服務(wù) 2.?微服務(wù)的網(wǎng)關(guān) 與 應(yīng)用服務(wù) 之間的關(guān)系 3.?應(yīng)用服務(wù)中的 編排,轉(zhuǎn)換,驗(yàn)證,轉(zhuǎn)發(fā) 4.?工作單元 (Unit of Work) 5.?數(shù)據(jù)傳輸對(duì)象 (Data Transfer Object) 6.?事務(wù)腳本 (Transaction Script) 與領(lǐng)域模型 7.?依賴(lài)注入在應(yīng)用服務(wù)中的使用 8.?案例:實(shí)現(xiàn)應(yīng)用服務(wù) 9.?應(yīng)用服務(wù)的關(guān)注點(diǎn) 10.實(shí)戰(zhàn) -任務(wù)分配執(zhí)行系統(tǒng) 應(yīng)用層構(gòu)建 |
? |
十一、領(lǐng)域服務(wù) – 不是實(shí)體本身的行為都?xì)w它 1.?領(lǐng)域服務(wù)的冪等性 2.?案例:實(shí)現(xiàn)領(lǐng)域服務(wù) 3.?實(shí)戰(zhàn) -任務(wù)分配執(zhí)行系統(tǒng) 領(lǐng)域服務(wù)層構(gòu)建 |
? |
十二、資源庫(kù) – 聚合的起點(diǎn)與終點(diǎn) 1.?集合特性 2.?資源庫(kù)與數(shù)據(jù)訪問(wèn)層的區(qū)別 3.?資源庫(kù)的誤解 4.?資源庫(kù)的實(shí)現(xiàn)要點(diǎn) 5.?案例:資源庫(kù)的實(shí)現(xiàn) 6.?領(lǐng)域模型 VS數(shù)據(jù)模型 7.?案例:泛型資源庫(kù) 實(shí)戰(zhàn) -任務(wù)分配執(zhí)行系統(tǒng) 持久化 |
基于事件驅(qū)動(dòng)的架構(gòu)設(shè)計(jì) |
|
? |
十三、領(lǐng)域事件 – 保持最終一致性的信使 1.?領(lǐng)域事件是領(lǐng)域建模中極其重要的部分 2.?事務(wù)一致性,高并發(fā)下的窘境 3.?最終一致性,妥協(xié)帶來(lái)高擴(kuò)展性 4.?原則:一個(gè)事務(wù)中只對(duì)一個(gè)聚合進(jìn)行修改 5.?案例:實(shí)現(xiàn)抽象事件源,發(fā)布事件源 6.?案例:實(shí)現(xiàn)抽象事件處理 7.?案例:實(shí)現(xiàn)領(lǐng)域事件的發(fā)布與訂閱 8.?實(shí)戰(zhàn) -任務(wù)分配執(zhí)行系統(tǒng) 任務(wù)分配領(lǐng)域邏輯 |
? |
十四、微服務(wù)中基于事件的系統(tǒng)架構(gòu) 1.?微服務(wù)之間如何穩(wěn)健的發(fā)布與消費(fèi)事件 2.?如何保證發(fā)布事件的原子性 3.?使用事件表發(fā)布事件 4.?案例:如何實(shí)現(xiàn)事件感知聚合根 5.?案例:如何實(shí)現(xiàn)事件感知資源庫(kù) 6.?如何通過(guò) AOP 進(jìn)行通用的事件處理 |
? |
十五、微服務(wù)形式下的CQRS 1.?DDD中的典型寫(xiě)操作 2.?基于數(shù)據(jù)模型的讀操作 3.?基于領(lǐng)域模型的讀操作 4.?讀寫(xiě)分離模型 5.?案例:電商系統(tǒng)中的讀寫(xiě)分離場(chǎng)景 6.?單進(jìn)程單實(shí)體 + 共享存儲(chǔ)/共享模型:Inventory詳情查詢(xún) 7.?單進(jìn)程單實(shí)體 + 共享存儲(chǔ)/分離模型:Product摘要查詢(xún) 8.?單進(jìn)程跨實(shí)體 + 分離存儲(chǔ)/分離模型:Product詳情查詢(xún)(包含Category信息) 9.?跨進(jìn)程跨實(shí)體 + 分離存儲(chǔ)/分離模型:Order詳情查詢(xún)(包含Product信息) |