400-626-7377
采用案例貫穿的教學手法,詳細介紹了軟件設計過程需要注意的要點及難點
從軟件設計原則、設計模式、架構設計到代碼重構、性能優化等多維度展開,構建完整的軟件設計與重構知識體系
讓學員在模擬實戰環境中體驗完整的軟件設計與重構過程,直面并解決實際開發中遇到的復雜問題,真正做到學以致用
講師將十幾年的行業經驗與大量的真實案例結合,有針對性的解決項目過程中技術人員常犯的錯誤,拓展職業視野
在編碼之前制定設計方案,避免在開發過程中頻繁修改代碼,提高軟件開發效率
編碼之前進行全面的需求分析和規劃,從而設計出更加優秀的軟件架構和模塊設計,提高軟件的質量和可靠性
設計出易于維護和升級的軟件系統,減少維護成本和升級難度
在開發過程中發現問題和缺陷,避免在后期進行大量的修改和調整,從而減少軟件開發成本
優化代碼結構、提高可讀性和可維護性來提升代碼質量
優化算法和數據結構,提高軟件的性能和響應速度
使軟件更加靈活,以適應新的需求,同時保持代碼的清晰和可維護性
將軟件更新到最新的技術棧,提高安全性、穩定性和可擴展性
統一代碼風格,提高團隊合作效率
幫助識別和修復潛在的bug,減少軟件的故障率和維護成本
在真實場景中尋找問題根源,解決設計難題,并制定正確的設計方案
用慢動作的手法還原需要變更,通過每一次的正確設計,不讓軟件退化,保證高質量
重構是軟件變更中保持高質量的必然
學會運用“兩頂帽子”的方式應對變更
實戰角度講解“小步快跑”過程
掌握“軟件重構七步曲”
自己動手重構一個大系統
學會有效解決軟件重構面臨的難題
核心思想講解+軟件重構實踐+點評分析總結
獲得由工業和信息化部教育與考試中心統一頒發《軟件設計模式與重構工程師》工業和信息化職業能力證書
對軟件開發有興趣,希望系統地學習軟件設計模式和重構技術的人群
已經具備一定軟件開發經驗,但希望提高代碼質量、可維護性和擴展性的開發者
想要進一步深化對軟件設計原則和最佳實踐的理解,以及通過重構提升現有代碼質量的開發者
希望了解如何在整個團隊或項目中推廣和應用設計模式和重構技術的人群
軟件開發的輪回:
1.起初客戶提出的需求并不復雜
2.隨著日后的變更,系統開始變得越來越復雜
3.激烈的市場要求快速交付
4.越來越復雜的系統交付速度會越來越慢
5.越來越快的技術發展要求技術架構不斷更迭
帶來的問題:
1.系統交付速度越來越慢而不能適應市場變化
2.技術架構不斷更迭越來越困難而不能適應技術發展
3.測試變得越來越困難而任務繁重
4.軟件系統越來越笨重而不適應未來變化
探討軟件退化的根源
案例分析:演示電商網站付款功能代碼質量下降的過程
1.起初的設計
2.隨后的變更
3.質量不斷下降的過程
軟件質量下降的根源:
1.軟件總是因變更而變得越來越復雜
2.軟件結構已經不再適應復雜的軟件需求
3.必須要調整軟件結構以適應新的軟件需求
4.重構是保持高質量軟件設計的習慣
兩頂帽子的設計方式
軟件是因需求變更而質量下降嗎?
案例分析:推演軟件變更的設計過程
應對軟件變更的最佳方式:兩頂帽子
1.重構原有代碼以適應新的需求
2.實現新的需求
案例:演示兩頂帽子的設計過程
準確理解高質量代碼
1.剖析高質量代碼設計的本質
2.軟件的質量保證:內部質量與外部質量
3.高質量軟件設計的標準:易于閱讀、易于維護、易于變更
準確理解代碼整潔之道
1.什么時候應該代碼整潔
2.函數代碼整潔應當遵循的原則
3.類與接口代碼整潔應當遵循的原則
4.注釋代碼的整潔之道
5.異常處理的代碼整潔之道
案例:實戰項目的整潔代碼展示
案例分析軟件設計原則及其本質
1.低耦合
1)依賴反轉原則(DIP)
案例:購票業務類與數據訪問類
2)開放-封閉原則(OCP)
案例:需求變更與可擴展點設計
案例:Square/Circle的解決方案
2.高內聚
1)單一職責原則(SRP)
案例:財務憑證變更帶來的問題
案例:超級大函數與大對象的難題
案例:MySQL讀寫分離的改造過程
2)不要重復自己原則(DRY)
典型的代碼重復案例與散彈式修改
探討代碼復用的設計難題與軟件重構
案例講解:代碼復用的常用方法
利用DeepSeek進行代碼的優化
1.國產智能大模型DeepSeek的13個應用場景:
代碼改寫、代碼解釋、代碼生成、中英文翻譯,等等
2.智能大模型核心應用的精華:
提示詞工程、文檔上傳、搭建本地知識庫
3.AI自動化編程帶來的挑戰:
1)不能交給AI過于復雜的任務
2)AI編寫的代碼如何規范編程,基于某個平臺進行編程
3)AI編寫的代碼,日后如何變更維護
解決方案:以知識庫作為規范指導AI編程
1.通過知識庫制定DeepSeek軟件開發的模板與規范:
1)文檔模板:架構設計的模板、用例模型的模板、領域模型的模板
2)開發規范:領域對象、服務接口、DSL配置、測試用例的開發規范
2.基于知識庫進行的DeepSeek軟件開發:
1)基于業務需求進行分析設計
2)將大任務拆分成無數個小任務
3)基于知識庫的規范進行AI編程
4)基于知識庫的規范AI編寫測試用例
軟件重構的概念與設計思想
1.重構是一系列代碼的等量變換
案例:一個Hello World重構過程
2.重構的保險索:自動化測試
案例:Hello World的自動化測試過程
3.軟件修改的四種動機——重構的價值
4.一個真實的謊言——重構的誤區
5.重構的主要方法與技巧
重構是高質量編碼的實現方式
1.重構是代碼整潔與高質量編碼的實現方式
1)準確理解軟件重構
2)每次變更的時候,先重構再實現需求
3)每過一段時間就通過重構整理一次代碼
2. 基于AI的軟件重構思路
1)用AI進行原始代碼的理解
2)用AI進行代碼的改寫與優化
3)用AI編寫測試用例
3.案例:演練Hello World的維護變更過程
1)最初的軟件設計
2)第一次變更:抽取方法與抽取類
3)第二次變更:抽取接口與系統分層
4)重構完成以后,用測試用例進行驗證
演練一個完整的重構過程
案例分析:重構一個大型遺留系統
1.重構第一步:分解大函數
超級大函數及其危害
案例:演示大函數產生的過程
案例:演示抽取方法操作步驟
實踐抽取方法會遇到的問題和解決方案
演練AI編程在抽取方法中的應用
2.重構第二步:拆分大對象
超級大對象及其危害
案例:演示超級大對象的產生過程
案例:演示抽取類的操作步驟
講解單一職責設計原則
案例:演示“分久必合,合久必分”的重構過程
演練AI編程在抽取類中的應用
3.重構第三步:提高復用率
講解順序編程及其危害
“不要重復代碼”原則
案例:提高代碼復用的6個方法
案例:演示新增代碼時的代碼復用過程
用靜態檢查工具檢查重復代碼
4.重構第四步:可擴展設計
過度設計 vs. 恰如其分的設計
講解“開放-封閉”的設計原則
案例:講解可擴展設計的4個方法
案例:講解新增代碼的可擴展設計過程
5.重構第五步:降低耦合度
案例:講解接口、實現與工廠模式
案例:講解外部接口解耦與適配器模式
演練用AI編程進行設計模式的設計
6.重構第六步:系統分層
反思軟件架構需要怎樣的分層結構
遺留系統如何擁抱需求變化
遺留系統如何應對技術變革
7.重構第七步:領域驅動設計
領域驅動設計的概念
講解領域模型分析方法
演練一個完整的DeepSeek開發過程
1.通過知識庫制定DeepSeek軟件開發的模板與規范:
1)文檔模板:架構設計的模板、用例模型的模板、領域模型的模板
2)開發規范:領域對象、服務接口、DSL配置、測試用例的開發規范
2.基于知識庫進行的DeepSeek軟件開發:
1)DeepSeek輔助的軟件需求探索與編寫需求文檔
2)DeepSeek輔助編寫用例模型
3)DeepSeek輔助編寫領域模型
4)DeepSeek輔助形成數據庫設計,編寫SQL腳本
5)DeepSeek輔助編寫領域對象與服務接口代碼,進行DSL配置
6)DeepSeek輔助,基于某個平臺進行業務代碼的編寫
7)DeepSeek輔助創建測試用例代碼
1. 設計模式的由來
2. 設計模式的發展
3. 設計模式對高質量軟件設計的作用
1. 軟件設計中外部接口的難題
2. 第三方框架帶來的設計難題
3. 適配器模式及其概念
4. 實戰演練AI的設計編碼
適配器模式的應用
1. 適配器模式解決第三方框架帶來的難題
案例:Hibernate適配器的設計
2. 適配器模式解決外部接口的設計難題
案例:第三方支付接口的設計
案例:財務數據接口的設計
1. 工資發放功能遇到的難題
1) 工資發放功能最初的設計及其問題
2) 對問題的分析過程及其新的設計思路
2. 策略模式及其概念
3. 實戰演練AI的設計編碼
策略模式的應用
1. 案例:工資發放功能設計改進的過程
1) 工資發放功能的Java實現
2) 工資發放功能的C++實現
2. 案例:折扣功能的設計實現
1) 深入理解開放-封閉原則
2) 折扣功能的變更與改進過程
探討軟件設計中遇到的難題
1. 依賴反轉原則的設計難題
2. 開放-封閉原則的設計難題
3. 探討工廠模式的本質
簡單工廠模式的設計實現
1. 簡單工廠模式的C++實現
2. 基于配置的簡單工廠模式
3. 剖析簡單工廠如何實現依賴反轉原則
案例:剖析Spring的beanFactory
4. 解讀工廠模式對設計的重大意義
5. 講解如何創建一個工廠
1) 創建工廠的步驟與關鍵點
2) 利用Spring框架簡化工廠類的設計
6. 實戰演練用AI設計一個工廠
什么是單例模式
1. 設計工廠類面臨的問題
2. 單例模式及其概念
3. 如何實現單例模式
單例模式的應用
1. 用單例模式設計工廠
2. 用單例模式提高性能
什么是原型模式
1. 工廠類在提供產品時遇到的設計問題
2. 原型模式及其概念
原型模式的設計實現
案例:函數調用的無副作用問題
案例:JavsScript中的原型模式
什么是模板方法模式
1. 煮咖啡給我們的啟示
2. 設計工廠類的新思路
3. 模板方法模式及其概念
模板方法模式的作用與技巧
案例:一個工廠模板的設計與實現
深入理解不要重復自己原則
1. 重復代碼帶來的嚴重后果
2. 散彈式修改及其解決思路
3. 探討實現代碼復用的難題
4. 代碼復用在不同場合采用的方法
5. 模板方法模式在代碼復用中的作用
1. 業務量增長帶來的多數據源問題
2. 運用裝飾者模式巧妙解決多數據源問題
3. 裝飾者模式及其概念
4. 實戰演練用AI進行設計變更
裝飾者模式的應用
案例:多數據源的設計實現
1. 多數據源問題的分析設計過程
2. 多數據源的設計與實現
案例:商城收銀系統的設計變更過程
1. 商城收銀系統期初的設計
2. 混合策略的設計與實現
3. 多層裝飾者的設計與實現
1. 對象繼承的泛濫
2. 橋接模式及其概念
3. 實戰演練用AI進行設計變更
橋接模式的應用
案例:員工管理與工資發放的設計
1. 員工管理與工資發放帶來的繼承泛濫問題
2. 采用橋接模式的設計與實現
案例:查詢支持類的設計
1. 查詢支持類遭遇的繼承泛濫問題
2. 查詢支持類的解決方案
3. 單例模式下查詢支持類的設計
深入體會單一職責原則
什么是享元模式
1. Hibernate是怎樣訪問數據的
2. 享元模式及其概念
享元模式的應用
案例:數據緩存的設計實現
案例:享元模式在大數據中的應用
用一個情景劇秒懂其它設計模式
觀察者模式:JobHunter的情景劇
代理模式:老板與秘書的差異
命令模式:像工作流一樣處理業務
外觀模式:超級家庭影院的煩惱
構建器模式:SQL Builder的設計
組合模式:如何構建一棵樹
中介者模式:QQ在溝通中的作用
迭代器模式:如何順序訪問一個集合
1. 重構是一種習慣
2. 重構讓程序可讀
3. 重構,才好復用
4. 先重構,再擴展
5. 緊急任務時的重構
1. 重構初期的困局
2. 解耦與自動化測試
3. 建立自動化測試體系
4. 通過AI建立自動化測試體系
1. 評價軟件質量的指標
2. 評價軟件質量的工具