- 六西格瑪專用軟件MINITAB應(yīng)用訓
- Office辦公軟件基本技能綜合訓練
- 讓財務(wù)分析自動化——Excel與財務(wù)
- 企業(yè)財務(wù)分析自動化——Excel與財
- 南京大學軟件工程在職碩士上海班商務(wù)智
- Excel與財務(wù)軟件高效整合應(yīng)用
- 在軟件開發(fā)流程中構(gòu)筑軟件質(zhì)量
- 六西格瑪專用軟件(minitab)應(yīng)
- 5G時代新媒體傳播軟件工具應(yīng)用
- 敏捷軟件開發(fā)
- PDCA管理培訓班
- 2014浙大心理咨詢師培訓班
- 高級DOE(實驗設(shè)計)研修培訓班
- 青少年演講口才培訓班實戰(zhàn)公眾演說
- 廣告公司中層管理人員管理技能培訓班
- EXCEL統(tǒng)計分析理論與實例特訓班教
- 精益生產(chǎn)與供應(yīng)商選擇、評估及全面管理
- 汽車公司大客戶銷售技巧與中國式客戶服
- 廣汽豐田精益考察培訓班
- 軟件項目實施管理課程
軟件設(shè)計模式與軟件重構(gòu)實戰(zhàn)訓練營 培訓班
課程編號:58511 課程人氣:628
課程價格:¥8800 課程時長:4天
- 課程說明
- 講師介紹
- 選擇同類課
初中高級工程師、企業(yè)架構(gòu)師、軟件設(shè)計師等; 各類軟件研發(fā)中心的軟件設(shè)計師、架構(gòu)師、項目經(jīng)理、技術(shù)總監(jiān)、質(zhì)量部門經(jīng)理。對于重構(gòu)技術(shù)懷有疑問和困惑,需要梳理解答的團隊和個人,效果最佳。
【培訓收益】
第一章
什么是高質(zhì)量的軟件設(shè)計 情景劇:軟件設(shè)計焦慮癥
1. 上次的設(shè)計太糟糕了,痛下決心以后要好好設(shè)計
2. 再次進行軟件設(shè)計時卻不知道該怎樣設(shè)計
1) 思考了很多,不知如何下手
2) 需求一變更,重新回到了糟糕的狀態(tài)
探討:如何進行高質(zhì)量的軟件設(shè)計
什么是高質(zhì)量的軟件設(shè)計
1. 軟件的質(zhì)量保證:內(nèi)部質(zhì)量與外部質(zhì)量
2. 高質(zhì)量軟件設(shè)計的標準:易讀、易于維護、易于變更
第二章
軟件設(shè)計原則 易于閱讀:
1. 規(guī)范代碼、編寫注釋與表明動機
案例:代碼編寫范例與簡便易行的方法
2. 領(lǐng)域驅(qū)動設(shè)計
易于維護與變更
1. 互聯(lián)網(wǎng)+帶來的挑戰(zhàn)
1) 系統(tǒng)需要不斷地技術(shù)升級與改造
2) 傳統(tǒng)行業(yè)必須向互聯(lián)網(wǎng)轉(zhuǎn)型
3) 但技術(shù)變革不是換零件那么簡單
4) 剖析應(yīng)對技術(shù)變革的方案
2. 案例講解軟件設(shè)計原則
1) 低耦合
a. 依賴反轉(zhuǎn)原則(DIP)
案例:購票業(yè)務(wù)類與數(shù)據(jù)訪問類
b. 開放-封閉原則(OCP)
案例:需求變更與可擴展點設(shè)計
案例:Square/Circle的解決方案
c. 里氏替換原則(LSP)
案例:Rectangle/Square的問題
案例:查詢參數(shù)傳遞類的問題
2) 高內(nèi)聚
案例:評審系統(tǒng)的設(shè)計
a. 單一職責原則(SRP)
案例:財務(wù)憑證變更帶來的問題
案例:超級大函數(shù)與大對象的難題
案例:MySQL讀寫分離的改造過程
b. 信息專家模式
c. 不要重復自己原則(DRY)
典型的代碼重復案例
探討代碼復用的難題
探討軟件設(shè)計模式:
1. 設(shè)計模式的由來
2. 設(shè)計模式的發(fā)展
3. 設(shè)計模式對高質(zhì)量軟件設(shè)計的作用
第二部分 軟件設(shè)計模式
第三章
適配器模式 什么是適配器模式
1. 軟件設(shè)計中外部接口的難題
2. 第三方框架帶來的設(shè)計難題
3. 適配器模式及其概念
適配器模式的應(yīng)用
1. 適配器模式解決第三方框架帶來的難題
案例:Hibernate適配器的設(shè)計
2. 適配器模式解決外部接口的設(shè)計難題
案例:第三方支付接口的設(shè)計
案例:財務(wù)數(shù)據(jù)接口的設(shè)計
第四章
策略模式 什么是策略模式
1. 工資發(fā)放功能遇到的難題
1) 工資發(fā)放功能最初的設(shè)計及其問題
2) 對問題的分析過程及其新的設(shè)計思路
2. 策略模式及其概念
策略模式的應(yīng)用
1. 案例:工資發(fā)放功能設(shè)計改進的過程
1) 工資發(fā)放功能的Java實現(xiàn)
2) 工資發(fā)放功能的C++實現(xiàn)
2. 案例:數(shù)據(jù)導出功能的設(shè)計實現(xiàn)
1) 深入理解開放-封閉原則
2) 數(shù)據(jù)導出功能的變更與改進過程
3. 案例:財務(wù)憑證生成功能的設(shè)計過程
1) 財務(wù)憑證生成功能的初始需求與設(shè)計
2) 財務(wù)憑證生成功能的擴展與分析過程
3) 財務(wù)憑證生成功能的最終設(shè)計
4) 深入理解單一職責原則
5) 學習“兩頂帽子”的設(shè)計方式
練習:財務(wù)憑證生成功能的設(shè)計與實現(xiàn)
第五章
工廠模式 探討軟件設(shè)計中遇到的難題
1. 依賴反轉(zhuǎn)原則的設(shè)計難題
2. 開放-封閉原則的設(shè)計難題
3. 探討工廠模式的本質(zhì)
簡單工廠模式
1. 簡單工廠模式的C++實現(xiàn)
2. 基于配置的簡單工廠模式
3. 剖析簡單工廠如何實現(xiàn)依賴反轉(zhuǎn)原則
案例:剖析Spring的beanFactory
4. 解讀工廠模式對設(shè)計的重大意義
5. 講解如何創(chuàng)建一個工廠
1) 創(chuàng)建工廠的步驟與關(guān)鍵點
2) 利用Spring框架簡化工廠類的設(shè)計
案例:數(shù)據(jù)導出功能的工廠實現(xiàn)
工廠方法模式
1. 工廠方法模式的概念
2. 工廠方法模式的應(yīng)用
案例:SAX框架的工廠類設(shè)計
抽象工廠模式
1. 抽象工廠模式的概念
2. 抽象工廠模式的實現(xiàn)
案例:標簽庫的設(shè)計改進過程
1) 最初的標簽庫設(shè)計
2) 運用簡單工廠的標簽庫設(shè)計
3) 運用工廠方法的標簽庫設(shè)計
4) 運用抽象工廠的標簽庫設(shè)計
5) 最終基于配置的標簽庫設(shè)計
第六章
單例模式 什么是單例模式
1. 設(shè)計工廠類面臨的問題
2. 單例模式及其概念
3. 如何實現(xiàn)單例模式
單例模式的應(yīng)用
1. 單例模式帶來的設(shè)計變革
1) 充血模型vs.貧血模型
2) 探討單例模式與性能問題
2. 單例模式改變了很多軟件的設(shè)計
第七章
原型模式 什么是原型模式
1. 工廠類在提供產(chǎn)品時遇到的設(shè)計問題
2. 原型模式及其概念
原型模式的設(shè)計實現(xiàn)
案例:函數(shù)調(diào)用的無副作用問題
案例:JavsScript中的原型模式
第八章
模板方法模式 什么是模板方法模式
1. 煮咖啡給我們的啟示
2. 設(shè)計工廠類的新思路
3. 模板方法模式及其概念
模板方法模式的作用與技巧
案例:一個工廠模板的設(shè)計與實現(xiàn)
深入理解不要重復自己原則
1. 重復代碼帶來的嚴重后果
2. 散彈式修改及其解決思路
3. 探討實現(xiàn)代碼復用的難題
4. 代碼復用在不同場合采用的方法
5. 模板方法模式在代碼復用中的作用
第九章
裝飾者模式 什么是裝飾者模式
1. 業(yè)務(wù)量增長帶來的多數(shù)據(jù)源問題
2. 運用裝飾者模式巧妙解決多數(shù)據(jù)源問題
3. 裝飾者模式及其概念
裝飾者模式的應(yīng)用
案例:多數(shù)據(jù)源的設(shè)計實現(xiàn)
1. 多數(shù)據(jù)源問題的分析設(shè)計過程
2. 多數(shù)據(jù)源的設(shè)計與實現(xiàn)
案例:商城收銀系統(tǒng)的設(shè)計變更過程
1. 商城收銀系統(tǒng)期初的設(shè)計
2. 混合策略的設(shè)計與實現(xiàn)
3. 多層裝飾者的設(shè)計與實現(xiàn)
重新理解里氏替換原則
1. 透明的功能擴展
2. 里氏替換原則
練習:商場收銀系統(tǒng)的2種設(shè)計與實現(xiàn)
第十章
橋接模式 什么是橋接模式
1. 對象繼承的泛濫
2. 橋接模式及其概念
橋接模式的應(yīng)用
案例:員工管理與工資發(fā)放的設(shè)計
1. 員工管理與工資發(fā)放帶來的繼承泛濫問題
2. 采用橋接模式的設(shè)計與實現(xiàn)
案例:查詢支持類的設(shè)計
1. 查詢支持類遭遇的繼承泛濫問題
2. 查詢支持類的解決方案
3. 單例模式下查詢支持類的設(shè)計
深入體會單一職責原則
第十一章
享元模式 什么是享元模式
1. Hibernate是怎樣訪問數(shù)據(jù)的
2. 享元模式及其概念
享元模式的應(yīng)用
案例:數(shù)據(jù)緩存的設(shè)計實現(xiàn)
案例:享元模式在大數(shù)據(jù)中的應(yīng)用
第十二章
其它設(shè)計模式 觀察者模式:JobHunter的情景劇
代理模式:老板與秘書的差異
命令模式:像工作流一樣處理業(yè)務(wù)
外觀模式:超級家庭影院的煩惱
構(gòu)建器模式:SQL Builder的設(shè)計
組合模式:如何構(gòu)建一棵樹
中介者模式:QQ在溝通中的作用
迭代器模式:如何順序訪問一個集合
第2-4天 軟件重構(gòu)實戰(zhàn)授課內(nèi)容
第一部分 為什么軟件需要及時重構(gòu)
第一單元
剖析軟件質(zhì)量不斷下降的根源 質(zhì)量不斷下降的表現(xiàn):
1. 程序代碼越來越亂
2. 軟件維護成本越來越高
3. 軟件變更越來越困難
4. 無法進行新技術(shù)的改造
以往采取的措施:
1. 頭痛醫(yī)頭,腳痛醫(yī)腳
2. 拋棄掉重新編寫
3. 因擔心未來變化而做的過度設(shè)計
帶來的問題
1. 團隊成員越來越多但效率卻越來越低
2. 測試變得越來越困難而任務(wù)繁重
3. 軟件系統(tǒng)越來越笨重而不適應(yīng)未來變化
分析與反思
案例分析:一個遺留系統(tǒng)的演化過程
1. 起初的設(shè)計
2. 隨后的變更
3. 質(zhì)量不斷下降的過程
軟件質(zhì)量下降的根源:
1. 軟件總是因變更而變得越來越復雜
2. 軟件結(jié)構(gòu)已經(jīng)不再適應(yīng)復雜的軟件需求
3. 必須要調(diào)整軟件結(jié)構(gòu)以適應(yīng)新的軟件需求
軟件是因需求變更而質(zhì)量下降嗎?
案例分析:推演軟件變更的設(shè)計過程
應(yīng)對軟件變更的最佳方式:兩頂帽子
1. 重構(gòu)原有代碼以適應(yīng)新的需求
2. 實現(xiàn)新的需求
案例:演示兩頂帽子的設(shè)計過程
案例:財務(wù)憑證生成程序的設(shè)計過程
第二單元
高質(zhì)量的軟件設(shè)計過程 案例講解軟件設(shè)計原則
1. 低耦合
1) 依賴反轉(zhuǎn)原則(DIP)
案例:購票業(yè)務(wù)類與數(shù)據(jù)訪問類
2) 開放-封閉原則(OCP)
案例:需求變更與可擴展點設(shè)計
案例:Square/Circle的解決方案
3) 里氏替換原則(LSP)
案例:Rectangle/Square的問題
案例:查詢參數(shù)傳遞類的問題
2. 高內(nèi)聚
1) 單一職責原則(SRP)
案例:財務(wù)憑證變更帶來的問題
案例:超級大函數(shù)與大對象的難題
案例:MySQL讀寫分離的改造過程
2) 信息專家模式
3) 不要重復自己原則(DRY)
4) 典型的代碼重復案例
5) 探討代碼復用的難題
以往軟件設(shè)計的過程:
3. 演示以往軟件設(shè)計的過程
4. 剖析以往軟件設(shè)計的問題與風險
小步快跑模式的開發(fā)過程:
1. 用最快的速度開發(fā)一個最核心的功能
2. 讓第一個版本運行起來并可以驗證
3. 在第一個版本的基礎(chǔ)上不斷添加功能:
a. 每次只添加一個很簡單、很單一的功能
b. 每次以兩頂帽子的方式添加新功能
c. 運行、調(diào)試與驗證
d. 重復這個過程添加下一個功能
4. 復雜的系統(tǒng)就是由一次次正確開發(fā)的不斷積累而成
案例:演示小步快跑的開發(fā)過程
小步快跑解決的問題:
1. 復雜功能有效地解耦
2. 代碼編寫總是可測試與驗證
3. 簡化設(shè)計與思考的復雜度
4. 適時重構(gòu)以避免軟件退化
案例:數(shù)據(jù)推送程序的設(shè)計過程
第二部分 如何進行軟件重構(gòu)
第三單元
何為重構(gòu) 軟件重構(gòu)的概念
1. 重構(gòu)是一系列代碼的等量變換
案例:一個Hello World重構(gòu)過程
2. 重構(gòu)的保險索:自動化測試
案例:Hello World的自動化測試過程
3. 軟件修改的四種動機——重構(gòu)的價值
4. 一個真實的謊言——重構(gòu)的誤區(qū)
5. 重構(gòu)的主要方法與技巧
案例分析:重構(gòu)一個大型遺留系統(tǒng)
1. 重構(gòu)第一步:分解大函數(shù)
超級大函數(shù)及其危害
案例:演示大函數(shù)產(chǎn)生的過程
案例:演示抽取方法操作步驟
實踐抽取方法會遇到的問題和解決方案
2. 重構(gòu)第二步:拆分大對象
超級大對象及其危害
案例:演示超級大對象的產(chǎn)生過程
案例:演示抽取類的操作步驟
講解單一職責設(shè)計原則
案例:演示“分久必合,合久必分”的重構(gòu)過程
3. 重構(gòu)第三步:提高復用率
講解順序編程及其危害
“不要重復代碼”原則
案例:提高代碼復用的6個方法
案例:演示新增代碼時的代碼復用過程
用靜態(tài)檢查工具檢查重復代碼
4. 重構(gòu)第四步:可擴展設(shè)計
過度設(shè)計 vs. 恰如其分的設(shè)計
講解“開放-封閉”的設(shè)計原則
案例:講解可擴展設(shè)計的4個方法
案例:講解新增代碼的可擴展設(shè)計過程
5. 重構(gòu)第五步:降低耦合度
案例:講解接口、實現(xiàn)與工廠模式
案例:講解外部接口解耦與適配器模式
6. 重構(gòu)第六步:系統(tǒng)分層
反思軟件架構(gòu)需要怎樣的分層結(jié)構(gòu)
遺留系統(tǒng)如何擁抱需求變化
遺留系統(tǒng)如何應(yīng)對技術(shù)變革
7. 重構(gòu)第七步:領(lǐng)域驅(qū)動設(shè)計
領(lǐng)域驅(qū)動設(shè)計的概念
講解領(lǐng)域模型分析方法
案例:智能溫控器分析設(shè)計過程(嵌入式+物聯(lián)網(wǎng))
1) 最初的領(lǐng)域驅(qū)動設(shè)計過程
2) 需求變更的領(lǐng)域驅(qū)動設(shè)計
3) 面向物聯(lián)網(wǎng)的架構(gòu)演進
練習:重構(gòu)一個小程序并編寫測試腳本
第四單元
關(guān)于重構(gòu)的討論 什么時候重構(gòu)
1. 重構(gòu)是一種習慣
2. 重構(gòu)讓程序可讀
3. 重構(gòu),才好復用
4. 先重構(gòu),再擴展
5. 緊急任務(wù)時的重構(gòu)
測試的困境
1. 重構(gòu)初期的困局
2. 解耦與自動化測試
3. 建立自動化測試體系
重構(gòu)的評價
1. 評價軟件質(zhì)量的指標
2. 評價軟件質(zhì)量的工具
范老師 獨立咨詢顧問,暢銷書籍《架構(gòu)真意》與《大話重構(gòu)》的作者,規(guī)?;艚軸PC。曾任航天信息首席架構(gòu)師,哈工大軟件工程碩士,軟件架構(gòu)及重構(gòu)的客座講師。從事軟件研發(fā)工作近二十年,并且現(xiàn)在一直堅守在大型軟件架構(gòu)設(shè)計一線工作。從需求分析、軟件開發(fā)到項目管理、架構(gòu)設(shè)計都有豐富的從業(yè)經(jīng)驗。先后參與了數(shù)十個國內(nèi)大型軟件項目,涉及國家財政、軍工、稅務(wù)、醫(yī)療等領(lǐng)域的大數(shù)據(jù)中臺建設(shè)、風險防控與人工智能研究?;ヂ?lián)網(wǎng)轉(zhuǎn)型、微服務(wù)轉(zhuǎn)型及大數(shù)據(jù)轉(zhuǎn)型的實踐者與倡導者。同時,還是大型遺留系統(tǒng)改造專業(yè)戶,多次參與大型遺留系統(tǒng)改造、軟件系統(tǒng)重構(gòu)等重大項目,長期關(guān)注大型業(yè)務(wù)系統(tǒng)的品質(zhì)保證、防止腐化以及技術(shù)改造等困擾軟件企業(yè)的問題,在遺留系統(tǒng)優(yōu)化與改造方面有豐富的經(jīng)驗。
程老師 中國科學院軟件研究所碩士,主要研究方向:架構(gòu)設(shè)計、項目管理實踐、大型高可用高并發(fā)架構(gòu)設(shè)計、微服務(wù)架構(gòu)、軟件測試等等。熟悉網(wǎng)絡(luò)分布式計算、數(shù)據(jù)庫、網(wǎng)絡(luò)操作系統(tǒng),精通J2EE、SQL、中間件服務(wù)器。在J2EE技術(shù)領(lǐng)域具有理論功底和實踐經(jīng)驗。在J2ME商務(wù)應(yīng)用和基于J2ME游戲開發(fā)領(lǐng)域具有深厚的理論功底和豐富的實戰(zhàn)經(jīng)驗。主要授課方向:DevOps落地實踐、微服務(wù)架構(gòu)、軟件構(gòu)架設(shè)計、UML、GO語言、OOAD、J2EE企業(yè)級高級應(yīng)用開發(fā)等。 擅長架構(gòu)企業(yè)級應(yīng)用;有獨立工作流引擎開發(fā)、企業(yè)系統(tǒng)應(yīng)用集成方面的豐富經(jīng)驗;在企業(yè)門戶(Portal)、報表、工作流引擎和企業(yè)服務(wù)總線(ESB)等應(yīng)用領(lǐng)域有深入的理論研究和充分的實踐;對軟件開發(fā)的整個流程有深刻認識,有很好的協(xié)作精神和學習能力。在架構(gòu)下的系統(tǒng)設(shè)計和開發(fā)方面均有豐富經(jīng)驗。能夠結(jié)合實際,在復雜的應(yīng)用環(huán)境中選擇適合的技術(shù)組合并合理利用開源中間件來降低項目開發(fā)風險、縮短開發(fā)周期、提高應(yīng)用系統(tǒng)的可維護性和可擴展性。
尹老師 《Spring Cloud微服務(wù)-全棧技術(shù)與案例解析》,《Spring Cloud微服務(wù)入門實戰(zhàn)與進階》作者。簡單的技術(shù)愛好者,先后就職于京東和阿里巴巴。一直從事Java服務(wù)端開發(fā)工作,前端開發(fā)工作。主要關(guān)注分布式,高并發(fā),后端服務(wù),目前重心在微服務(wù)這塊。
個人成就出書:《Spring Cloud微服務(wù)-全棧技術(shù)與案例解析》《Spring Cloud微服務(wù)入門實戰(zhàn)與進階》GitChat: 微服務(wù)中的短信服務(wù)如何設(shè)計?演講:極部落Java開發(fā)者大會,iTechPlus Java開發(fā)者大會分享嘉賓。
-
新政新規(guī)下延遲退休、末等調(diào)整、違紀處理、裁員解雇、勞資協(xié)商與典型勞動爭議案例分析高級培訓班
開課時間:已開課
開課地點: 北京-北京
專題一、績效管理與崗位調(diào)整1.什么情況下用人單位可以單方調(diào)整工作崗位?2.調(diào)崗時沒有書面確認,員工到新崗位3個月后能否反悔?3.可否對“三期內(nèi)”女職工進行調(diào)崗?4.協(xié)商調(diào)崗期間話術(shù)設(shè)計與真實案例分享;5.競聘上崗、定期輪崗的法律風險分析與應(yīng)對。6...
-
《從巡視、巡察和審計角度談國企招標采購風險防控》和《國企招標采購合規(guī)管理/最新政策解讀》專題培訓班
開課時間:已開課
開課地點: 江蘇-南京
(一)2024年招標投標采購領(lǐng)域最新政策文件解讀1.國務(wù)院辦公廳關(guān)于創(chuàng)新完善體制機制推動招標投標市場規(guī)范健康發(fā)展的意見(國辦發(fā)〔2024〕21號);2.《2024年中央企業(yè)采購與供應(yīng)鏈管理對標評估工作方案》(改革函〔2024〕9號);3.《公平競爭審查條例》(國務(wù)院令783號);..
-
國家軟考高級-系統(tǒng)架構(gòu)設(shè)計師 考前培訓班
開課時間:已開課
開課地點: 北京-北京
第一天上午 考試概述 1. 系統(tǒng)架構(gòu)的概念及其發(fā)展歷史2. 系統(tǒng)架構(gòu)師的定義與職業(yè)素質(zhì)3. 系統(tǒng)架構(gòu)師知識結(jié)構(gòu)操作系統(tǒng) 1. 操作系統(tǒng)基本知識2. 進程管理3. 存儲管理4. 文件管理5. 作業(yè)管理6. 設(shè)備管理第一天下午 數(shù)據(jù)庫系統(tǒng) 1. 數(shù)據(jù)庫設(shè)計..
-
國家軟考高級-網(wǎng)絡(luò)規(guī)劃設(shè)計師 考前培訓班
開課時間:已開課
開課地點: 北京-北京
第一天 計算機網(wǎng)絡(luò)基礎(chǔ) 計算機網(wǎng)絡(luò)組成、分類及模型,數(shù)據(jù)通信基礎(chǔ) 局域網(wǎng)訪問控制,高速局域網(wǎng),無線廣域網(wǎng)與虛擬局域網(wǎng) 廣域網(wǎng)擁塞機制與接入技術(shù),網(wǎng)絡(luò)互連技術(shù)與網(wǎng)絡(luò)協(xié)議 網(wǎng)絡(luò)設(shè)備的功能與應(yīng)用 網(wǎng)絡(luò)管理..
-
產(chǎn)品戰(zhàn)略規(guī)劃實戰(zhàn) 培訓班
開課時間:已開課
開課地點: 北京-北京
戰(zhàn)略規(guī)劃定義 1. 戰(zhàn)略定義2. 戰(zhàn)略規(guī)劃定義與執(zhí)行障礙3. 戰(zhàn)略規(guī)劃與找工作類比 案例練習:1. 案例:戰(zhàn)略與登山尋寶藏的類比2. 案例:戰(zhàn)略規(guī)劃與找工作的類比企業(yè)戰(zhàn)略的3個層次 1. 總體戰(zhàn)略2. 業(yè)務(wù)戰(zhàn)略3. 職能戰(zhàn)略 華為BLM業(yè)務(wù)領(lǐng)先模型(業(yè)務(wù)級) BL..