400-626-7377
采用案例貫穿的教學(xué)手法,詳細(xì)介紹了軟件設(shè)計(jì)過(guò)程需要注意的要點(diǎn)及難點(diǎn)
從軟件設(shè)計(jì)原則、設(shè)計(jì)模式、架構(gòu)設(shè)計(jì)到代碼重構(gòu)、性能優(yōu)化等多維度展開(kāi),構(gòu)建完整的軟件設(shè)計(jì)與重構(gòu)知識(shí)體系
讓學(xué)員在模擬實(shí)戰(zhàn)環(huán)境中體驗(yàn)完整的軟件設(shè)計(jì)與重構(gòu)過(guò)程,直面并解決實(shí)際開(kāi)發(fā)中遇到的復(fù)雜問(wèn)題,真正做到學(xué)以致用
講師將十幾年的行業(yè)經(jīng)驗(yàn)與大量的真實(shí)案例結(jié)合,有針對(duì)性的解決項(xiàng)目過(guò)程中技術(shù)人員常犯的錯(cuò)誤,拓展職業(yè)視野
在編碼之前制定設(shè)計(jì)方案,避免在開(kāi)發(fā)過(guò)程中頻繁修改代碼,提高軟件開(kāi)發(fā)效率
編碼之前進(jìn)行全面的需求分析和規(guī)劃,從而設(shè)計(jì)出更加優(yōu)秀的軟件架構(gòu)和模塊設(shè)計(jì),提高軟件的質(zhì)量和可靠性
設(shè)計(jì)出易于維護(hù)和升級(jí)的軟件系統(tǒng),減少維護(hù)成本和升級(jí)難度
在開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)問(wèn)題和缺陷,避免在后期進(jìn)行大量的修改和調(diào)整,從而減少軟件開(kāi)發(fā)成本
優(yōu)化代碼結(jié)構(gòu)、提高可讀性和可維護(hù)性來(lái)提升代碼質(zhì)量
優(yōu)化算法和數(shù)據(jù)結(jié)構(gòu),提高軟件的性能和響應(yīng)速度
使軟件更加靈活,以適應(yīng)新的需求,同時(shí)保持代碼的清晰和可維護(hù)性
將軟件更新到最新的技術(shù)棧,提高安全性、穩(wěn)定性和可擴(kuò)展性
統(tǒng)一代碼風(fēng)格,提高團(tuán)隊(duì)合作效率
幫助識(shí)別和修復(fù)潛在的bug,減少軟件的故障率和維護(hù)成本
在真實(shí)場(chǎng)景中尋找問(wèn)題根源,解決設(shè)計(jì)難題,并制定正確的設(shè)計(jì)方案
用慢動(dòng)作的手法還原需要變更,通過(guò)每一次的正確設(shè)計(jì),不讓軟件退化,保證高質(zhì)量
重構(gòu)是軟件變更中保持高質(zhì)量的必然
學(xué)會(huì)運(yùn)用“兩頂帽子”的方式應(yīng)對(duì)變更
實(shí)戰(zhàn)角度講解“小步快跑”過(guò)程
掌握“軟件重構(gòu)七步曲”
自己動(dòng)手重構(gòu)一個(gè)大系統(tǒng)
學(xué)會(huì)有效解決軟件重構(gòu)面臨的難題
核心思想講解+軟件重構(gòu)實(shí)踐+點(diǎn)評(píng)分析總結(jié)
獲得由工業(yè)和信息化部教育與考試中心統(tǒng)一頒發(fā)《軟件設(shè)計(jì)模式與重構(gòu)工程師》工業(yè)和信息化職業(yè)能力證書(shū)
對(duì)軟件開(kāi)發(fā)有興趣,希望系統(tǒng)地學(xué)習(xí)軟件設(shè)計(jì)模式和重構(gòu)技術(shù)的人群
已經(jīng)具備一定軟件開(kāi)發(fā)經(jīng)驗(yàn),但希望提高代碼質(zhì)量、可維護(hù)性和擴(kuò)展性的開(kāi)發(fā)者
想要進(jìn)一步深化對(duì)軟件設(shè)計(jì)原則和最佳實(shí)踐的理解,以及通過(guò)重構(gòu)提升現(xiàn)有代碼質(zhì)量的開(kāi)發(fā)者
希望了解如何在整個(gè)團(tuán)隊(duì)或項(xiàng)目中推廣和應(yīng)用設(shè)計(jì)模式和重構(gòu)技術(shù)的人群
情景劇:軟件設(shè)計(jì)焦慮癥
1.上次的設(shè)計(jì)太糟糕了,痛下決心以后要好好設(shè)計(jì)
2.再次進(jìn)行軟件設(shè)計(jì)時(shí)卻不知道該怎樣設(shè)計(jì)
探討:如何進(jìn)行高質(zhì)量的軟件設(shè)計(jì)
什么是高質(zhì)量的軟件設(shè)計(jì)
1.軟件的質(zhì)量保證:內(nèi)部質(zhì)量與外部質(zhì)量
2.高質(zhì)量軟件設(shè)計(jì)的標(biāo)準(zhǔn):易讀、易于維護(hù)、易于變更
易于閱讀
1.規(guī)范代碼、編寫(xiě)注釋與表明動(dòng)機(jī)
案例:代碼編寫(xiě)范例與簡(jiǎn)便易行的方法
2.領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
易于維護(hù)與變更
1.互聯(lián)網(wǎng)+帶來(lái)的挑戰(zhàn)
2.案例講解軟件設(shè)計(jì)原則
探討軟件設(shè)計(jì)模式
什么是適配器模式
1.軟件設(shè)計(jì)中外部接口的難題
2.第三方框架帶來(lái)的設(shè)計(jì)難題
3.適配器模式及其概念
適配器模式的應(yīng)用
1.適配器模式解決第三方框架帶來(lái)的難題
案例:Hibernate適配器的設(shè)計(jì)
2.適配器模式解決外部接口的設(shè)計(jì)難題
案例:第三方支付接口的設(shè)計(jì)
案例:財(cái)務(wù)數(shù)據(jù)接口的設(shè)計(jì)
什么是策略模式
1.工資發(fā)放功能遇到的難題
2.策略模式及其概念
策略模式的應(yīng)用
1.案例:工資發(fā)放功能設(shè)計(jì)改進(jìn)的過(guò)程
2.案例:數(shù)據(jù)導(dǎo)出功能的設(shè)計(jì)實(shí)現(xiàn)
3.案例:財(cái)務(wù)憑證生成功能的設(shè)計(jì)過(guò)程
練習(xí):財(cái)務(wù)憑證生成功能的設(shè)計(jì)與實(shí)現(xiàn)
探討軟件設(shè)計(jì)中遇到的難題
1.依賴(lài)反轉(zhuǎn)原則的設(shè)計(jì)難題
2.開(kāi)放-封閉原則的設(shè)計(jì)難題
3.探討工廠(chǎng)模式的本質(zhì)
簡(jiǎn)單工廠(chǎng)模式
1.簡(jiǎn)單工廠(chǎng)模式的C++實(shí)現(xiàn)
2.基于配置的簡(jiǎn)單工廠(chǎng)模式
3.剖析簡(jiǎn)單工廠(chǎng)如何實(shí)現(xiàn)依賴(lài)反轉(zhuǎn)原則
案例:剖析Spring的beanFactory
4.解讀工廠(chǎng)模式對(duì)設(shè)計(jì)的重大意義
5.講解如何創(chuàng)建一個(gè)工廠(chǎng)
案例:數(shù)據(jù)導(dǎo)出功能的工廠(chǎng)實(shí)現(xiàn)
工廠(chǎng)方法模式
1.工廠(chǎng)方法模式的概念
2.工廠(chǎng)方法模式的應(yīng)用
案例:SAX框架的工廠(chǎng)類(lèi)設(shè)計(jì)
抽象工廠(chǎng)模式
1.抽象工廠(chǎng)模式的概念
2.抽象工廠(chǎng)模式的實(shí)現(xiàn)
案例:標(biāo)簽庫(kù)的設(shè)計(jì)改進(jìn)過(guò)程
什么是單例模式
1.設(shè)計(jì)工廠(chǎng)類(lèi)面臨的問(wèn)題
2.單例模式及其概念
3.如何實(shí)現(xiàn)單例模式
單例模式的應(yīng)用
1.單例模式帶來(lái)的設(shè)計(jì)變革
2.單例模式改變了很多軟件的設(shè)計(jì)
什么是原型模式
1.工廠(chǎng)類(lèi)在提供產(chǎn)品時(shí)遇到的設(shè)計(jì)問(wèn)題
2.原型模式及其概念
原型模式的設(shè)計(jì)實(shí)現(xiàn)
案例:函數(shù)調(diào)用的無(wú)副作用問(wèn)題
案例:JavaScript中的原型模式
什么是模板方法模式
1.煮咖啡給我們的啟示
2.設(shè)計(jì)工廠(chǎng)類(lèi)的新思路
3.模板方法模式及其概念
模板方法模式的作用與技巧
案例:一個(gè)工廠(chǎng)模板的設(shè)計(jì)與實(shí)現(xiàn)
深入理解不要重復(fù)自己原則
1.重復(fù)代碼帶來(lái)的嚴(yán)重后果
2.散彈式修改及其解決思路
3.探討實(shí)現(xiàn)代碼復(fù)用的難題
4.代碼復(fù)用在不同場(chǎng)合采用的方法
5.模板方法模式在代碼復(fù)用中的作用
什么是裝飾者模式
1.業(yè)務(wù)量增長(zhǎng)帶來(lái)的多數(shù)據(jù)源問(wèn)題
2.運(yùn)用裝飾者模式巧妙解決多數(shù)據(jù)源問(wèn)題
3.裝飾者模式及其概念
裝飾者模式的應(yīng)用
案例:多數(shù)據(jù)源的設(shè)計(jì)實(shí)現(xiàn)
1.多數(shù)據(jù)源問(wèn)題的分析設(shè)計(jì)過(guò)程
2.多數(shù)據(jù)源的設(shè)計(jì)與實(shí)現(xiàn)
案例:商城收銀系統(tǒng)的設(shè)計(jì)變更過(guò)程
1.商城收銀系統(tǒng)期初的設(shè)計(jì)
2.混合策略的設(shè)計(jì)與實(shí)現(xiàn)
3.多層裝飾者的設(shè)計(jì)與實(shí)現(xiàn)
重新理解里氏替換原則
1.透明的功能擴(kuò)展
2.里氏替換原則
練習(xí):商場(chǎng)收銀系統(tǒng)的2種設(shè)計(jì)與實(shí)現(xiàn)
什么是橋接模式
1.對(duì)象繼承的泛濫
2.橋接模式及其概念
橋接模式的應(yīng)用
案例:?jiǎn)T工管理與工資發(fā)放的設(shè)計(jì)
1.員工管理與工資發(fā)放帶來(lái)的繼承泛濫問(wèn)題
2.采用橋接模式的設(shè)計(jì)與實(shí)現(xiàn)
案例:查詢(xún)支持類(lèi)的設(shè)計(jì)
1.查詢(xún)支持類(lèi)遭遇的繼承泛濫問(wèn)題
2.查詢(xún)支持類(lèi)的解決方案
3.單例模式下查詢(xún)支持類(lèi)的設(shè)計(jì)
深入體會(huì)單一職責(zé)原則
什么是享元模式
1.Hibernate是怎樣訪(fǎng)問(wèn)數(shù)據(jù)的
2.享元模式及其概念
享元模式的應(yīng)用
案例:數(shù)據(jù)緩存的設(shè)計(jì)實(shí)現(xiàn)
案例:享元模式在大數(shù)據(jù)中的應(yīng)用
觀察者模式:JobHunter的情景劇
代理模式:老板與秘書(shū)的差異
命令模式:像工作流一樣處理業(yè)務(wù)
外觀模式:超級(jí)家庭影院的煩惱
構(gòu)建器模式:SQL Builder的設(shè)計(jì)
組合模式:如何構(gòu)建一棵樹(shù)
中介者模式:QQ在溝通中的作用
迭代器模式:如何順序訪(fǎng)問(wèn)一個(gè)集合
質(zhì)量不斷下降的表現(xiàn):
1.程序代碼越來(lái)越亂
2.軟件維護(hù)成本越來(lái)越高
3.軟件變更越來(lái)越困難
4.無(wú)法進(jìn)行新技術(shù)的改造
以往采取的措施:
1.頭痛醫(yī)頭,腳痛醫(yī)腳
2.拋棄掉重新編寫(xiě)
3.因擔(dān)心未來(lái)變化而做的過(guò)度設(shè)計(jì)
帶來(lái)的問(wèn)題
1.團(tuán)隊(duì)成員越來(lái)越多但效率卻越來(lái)越低
2.測(cè)試變得越來(lái)越困難而任務(wù)繁重
3.軟件系統(tǒng)越來(lái)越笨重而不適應(yīng)未來(lái)變化
分析與反思
案例分析:一個(gè)遺留系統(tǒng)的演化過(guò)程
1.起初的設(shè)計(jì)
2.隨后的變更
3.質(zhì)量不斷下降的過(guò)程
軟件質(zhì)量下降的根源:
1.軟件總是因變更而變得越來(lái)越復(fù)雜
2.軟件結(jié)構(gòu)已經(jīng)不再適應(yīng)復(fù)雜的軟件需求
3.必須要調(diào)整軟件結(jié)構(gòu)以適應(yīng)新的軟件需求
軟件是因需求變更而質(zhì)量下降嗎?
案例分析:推演軟件變更的設(shè)計(jì)過(guò)程
應(yīng)對(duì)軟件變更的最佳方式:兩頂帽子
1.重構(gòu)原有代碼以適應(yīng)新的需求
2.實(shí)現(xiàn)新的需求
案例:演示兩頂帽子的設(shè)計(jì)過(guò)程
案例:財(cái)務(wù)憑證生成程序的設(shè)計(jì)過(guò)程
案例講解軟件設(shè)計(jì)原則
1.低耦合
2.高內(nèi)聚
以往軟件設(shè)計(jì)的過(guò)程:
3.演示以往軟件設(shè)計(jì)的過(guò)程
4.剖析以往軟件設(shè)計(jì)的問(wèn)題與風(fēng)險(xiǎn)
小步快跑模式的開(kāi)發(fā)過(guò)程:
1.用最快的速度開(kāi)發(fā)一個(gè)最核心的功能
2.讓第一個(gè)版本運(yùn)行起來(lái)并可以驗(yàn)證
3.在第一個(gè)版本的基礎(chǔ)上不斷添加功能
案例:演示小步快跑的開(kāi)發(fā)過(guò)程
小步快跑解決的問(wèn)題:
1.復(fù)雜功能有效地解耦
2.代碼編寫(xiě)總是可測(cè)試與驗(yàn)證
3.簡(jiǎn)化設(shè)計(jì)與思考的復(fù)雜度
4.適時(shí)重構(gòu)以避免軟件退化
案例:數(shù)據(jù)推送程序的設(shè)計(jì)過(guò)程
軟件重構(gòu)的概念
1.重構(gòu)是一系列代碼的等量變換
案例:一個(gè)Hello World重構(gòu)過(guò)程
2.重構(gòu)的保險(xiǎn)索:自動(dòng)化測(cè)試
案例:Hello World的自動(dòng)化測(cè)試過(guò)程
3.軟件修改的四種動(dòng)機(jī)——重構(gòu)的價(jià)值
4.一個(gè)真實(shí)的謊言——重構(gòu)的誤區(qū)
5.重構(gòu)的主要方法與技巧
案例分析:重構(gòu)一個(gè)大型遺留系統(tǒng)
1.重構(gòu)第一步:分解大函數(shù)
超級(jí)大函數(shù)及其危害
案例:演示大函數(shù)產(chǎn)生的過(guò)程
案例:演示抽取方法操作步驟
實(shí)踐抽取方法會(huì)遇到的問(wèn)題和解決方案
2.重構(gòu)第二步:拆分大對(duì)象
超級(jí)大對(duì)象及其危害
案例:演示超級(jí)大對(duì)象的產(chǎn)生過(guò)程
案例:演示抽取類(lèi)的操作步驟
講解單一職責(zé)設(shè)計(jì)原則
案例:演示“分久必合,合久必分”的重構(gòu)過(guò)程
3.重構(gòu)第三步:提高復(fù)用率
講解順序編程及其危害
“不要重復(fù)代碼”原則
案例:提高代碼復(fù)用的6個(gè)方法
案例:演示新增代碼時(shí)的代碼復(fù)用過(guò)程
用靜態(tài)檢查工具檢查重復(fù)代碼
4.重構(gòu)第四步:可擴(kuò)展設(shè)計(jì)
過(guò)度設(shè)計(jì) vs. 恰如其分的設(shè)計(jì)
講解“開(kāi)放-封閉”的設(shè)計(jì)原則
案例:講解可擴(kuò)展設(shè)計(jì)的4個(gè)方法
案例:講解新增代碼的可擴(kuò)展設(shè)計(jì)過(guò)程
5.重構(gòu)第五步:降低耦合度
案例:講解接口、實(shí)現(xiàn)與工廠(chǎng)模式
案例:講解外部接口解耦與適配器模式
6.重構(gòu)第六步:系統(tǒng)分層
反思軟件架構(gòu)需要怎樣的分層結(jié)構(gòu)
遺留系統(tǒng)如何擁抱需求變化
遺留系統(tǒng)如何應(yīng)對(duì)技術(shù)變革
7.重構(gòu)第七步:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的概念
講解領(lǐng)域模型分析方法
案例:智能溫控器分析設(shè)計(jì)過(guò)程(嵌入式+物聯(lián)網(wǎng))
練習(xí):重構(gòu)一個(gè)小程序并編寫(xiě)測(cè)試腳本
什么時(shí)候重構(gòu)
1.重構(gòu)是一種習(xí)慣
2.重構(gòu)讓程序可讀
3.重構(gòu),才好復(fù)用
4.先重構(gòu),再擴(kuò)展
5.緊急任務(wù)時(shí)的重構(gòu)
測(cè)試的困境
1.重構(gòu)初期的困局
2.解耦與自動(dòng)化測(cè)試
3.建立自動(dòng)化測(cè)試體系
重構(gòu)的評(píng)價(jià)
1.評(píng)價(jià)軟件質(zhì)量的指標(biāo)
2.評(píng)價(jià)軟件質(zhì)量的工具