開(kāi)發(fā)經(jīng)理
互聯(lián)網(wǎng)
軟件設(shè)計(jì)
推薦課程
average > 0 ? $model->average . '分' : '10.0分' ?>

軟件設(shè)計(jì)模式

Bruce Zhang

前ThoughtWorks 架構(gòu)師、敏捷教練

先后就職于中興通訊、惠普 GDCC、中軟國(guó)際、ThoughtWorks 等?大型中外企
業(yè),任職?角?色為?高級(jí)軟件?工程師,架構(gòu)師,技術(shù)總監(jiān),?首席咨詢師?,F(xiàn)為深圳?
大眼科技有限公司的?首席架構(gòu)師,聯(lián)合創(chuàng)始?人。精通包括 C#、Java、Ruby、Scala、
Python、JavaScript 等多種語(yǔ)?言,熟練掌握?面向?qū)ο笏枷?、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)、函數(shù)式語(yǔ)
?言、架構(gòu)、?大數(shù)據(jù)分析、敏捷與過(guò)程改進(jìn),并致?力于?大型軟件企業(yè)的?面向服務(wù)系
統(tǒng)架構(gòu)設(shè)計(jì)以及互聯(lián)網(wǎng) Web 系統(tǒng)架構(gòu)設(shè)計(jì)。在 ThoughtWorks 期間,作為?一名咨詢師,
主要為客戶提供組織的敏捷轉(zhuǎn)型、過(guò)程改進(jìn)、系統(tǒng)架構(gòu)監(jiān)理、領(lǐng)域設(shè)計(jì)、代碼質(zhì)量提升等咨
詢?工作。目前,作為公司產(chǎn)品的架構(gòu)師,致力于商業(yè)智能產(chǎn)品與?大數(shù)據(jù)分析平臺(tái)的開(kāi)發(fā)
與架構(gòu)設(shè)計(jì)

著譯作包括《解構(gòu)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》、《軟件設(shè)計(jì)精要與模式》、《架構(gòu)寶典》、《高可用可伸縮微服務(wù)架構(gòu)》、《Java設(shè)計(jì)模式》、《恰如其分的軟件架構(gòu)》、《WCF服務(wù)編程》、《人件》、《重構(gòu)——改善既有代碼設(shè)計(jì)》評(píng)注版、《架構(gòu)之美》評(píng)注版。

作為主持?人或講師多次被應(yīng)邀參加如中國(guó)軟件?大會(huì)、QCon、MPD 大會(huì)、
Agile China、Scrum Gathering 等?大型會(huì)議,并作為培訓(xùn)講師曾先后為摩托羅拉、惠普、
花旗銀?行、攜程、TCL、中興通訊、賽 門鐵克,廣發(fā)證券、平安銀?行等企業(yè)培訓(xùn)架構(gòu)、
設(shè)計(jì)、DDD、敏捷等專題內(nèi)容。著譯作包括《軟件設(shè)計(jì)精要與模式》、《Java 設(shè)計(jì)模式》、《恰如其分的軟件架構(gòu)》、《WCF 服務(wù)編程》、《?人件》等。目前,正在撰寫(xiě)《架構(gòu)之
美(Beatiful Architecture)》評(píng)注版,即將出版。

先后就職于中興通訊、惠普 GDCC、中軟國(guó)際、ThoughtWorks 等?大型中外企 業(yè),任職?角?色為?高級(jí)軟件?工程師,架構(gòu)師,技術(shù)總監(jiān),?首席咨詢師?,F(xiàn)為深圳? 大眼科技有限公司的?首席架構(gòu)師,聯(lián)合創(chuàng)始?人。精通包括 C#、Java、Ruby、Scala、 Python、JavaScript 等多種語(yǔ)?言,熟練掌握?面向?qū)ο笏枷?、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)、函數(shù)式語(yǔ) ?言、架構(gòu)、?大數(shù)據(jù)分析、敏捷與過(guò)程改進(jìn),并致?力于?大型軟件企業(yè)的?面向服務(wù)系 統(tǒng)架構(gòu)設(shè)計(jì)以及互聯(lián)網(wǎng) Web 系統(tǒng)架構(gòu)設(shè)計(jì)。在 ThoughtWorks 期間,作為?一名咨詢師, 主要為客戶提供組織的敏捷轉(zhuǎn)型、過(guò)程改進(jìn)、系統(tǒng)架構(gòu)監(jiān)理、領(lǐng)域設(shè)計(jì)、代碼質(zhì)量提升等咨 詢?工作。目前,作為公司產(chǎn)品的架構(gòu)師,致力于商業(yè)智能產(chǎn)品與?大數(shù)據(jù)分析平臺(tái)的開(kāi)發(fā) 與架構(gòu)設(shè)計(jì) 著譯作包括《解構(gòu)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》、《軟件設(shè)計(jì)精要與模式》、《架構(gòu)寶典》、《高可用可伸縮微服務(wù)架構(gòu)》、《Java設(shè)計(jì)模式》、《恰如其分的軟件架構(gòu)》、《WCF服務(wù)編程》、《人件》、《重構(gòu)——改善既有代碼設(shè)計(jì)》評(píng)注版、《架構(gòu)之美》評(píng)注版。 作為主持?人或講師多次被應(yīng)邀參加如中國(guó)軟件?大會(huì)、QCon、MPD 大會(huì)、 Agile China、Scrum Gathering 等?大型會(huì)議,并作為培訓(xùn)講師曾先后為摩托羅拉、惠普、 花旗銀?行、攜程、TCL、中興通訊、賽 門鐵克,廣發(fā)證券、平安銀?行等企業(yè)培訓(xùn)架構(gòu)、 設(shè)計(jì)、DDD、敏捷等專題內(nèi)容。著譯作包括《軟件設(shè)計(jì)精要與模式》、《Java 設(shè)計(jì)模式》、《恰如其分的軟件架構(gòu)》、《WCF 服務(wù)編程》、《?人件》等。目前,正在撰寫(xiě)《架構(gòu)之 美(Beatiful Architecture)》評(píng)注版,即將出版。

課程費(fèi)用

6800.00 /人

課程時(shí)長(zhǎng)

2

成為教練

課程簡(jiǎn)介

1、全真案例,借助案例與設(shè)計(jì)模式知識(shí)的原理,借助最佳實(shí)踐,幫助您提高設(shè)計(jì)能力,從而提高開(kāi)發(fā)效率和設(shè)計(jì)質(zhì)量
2、以新視角,揭示模式的本質(zhì)、思想方法,剖析出模式之“道”,跳出“為模式而模式”的“陷阱”
3、提升設(shè)計(jì)能力,使開(kāi)發(fā)人員由“編程小工”到設(shè)計(jì)專家
4、結(jié)合測(cè)試驅(qū)動(dòng)開(kāi)發(fā)與重構(gòu),提高軟件設(shè)計(jì)質(zhì)量
5、關(guān)注業(yè)界內(nèi)設(shè)計(jì)模式,以實(shí)戰(zhàn)訓(xùn)練驅(qū)動(dòng)對(duì)設(shè)計(jì)模式的理解與運(yùn)用

目標(biāo)收益

培訓(xùn)對(duì)象

1、員工無(wú)法接手遺留系統(tǒng),原因是代碼雜亂,可讀性差
2、團(tuán)隊(duì)成員沒(méi)有設(shè)計(jì)模式知識(shí)與經(jīng)驗(yàn),無(wú)法實(shí)施敏捷開(kāi)發(fā)
3、系統(tǒng)難以重構(gòu),不利于產(chǎn)品的重用與二次開(kāi)發(fā)
4、開(kāi)發(fā)效率得不到保障,因?yàn)樵敿?xì)設(shè)計(jì)人員不能理解架構(gòu)文檔與詳細(xì)設(shè)計(jì)方案
5、設(shè)計(jì)方案難于應(yīng)對(duì)需求變更
6、設(shè)計(jì)的系統(tǒng)架構(gòu)缺乏可擴(kuò)展性、可維護(hù)性和可測(cè)試性,不能合理地重用
7、架構(gòu)、設(shè)計(jì)、開(kāi)發(fā)三個(gè)環(huán)節(jié)中各個(gè)角色不能理解設(shè)計(jì)意圖,很難溝通

課程大綱

議題一:卓越的軟件設(shè)計(jì)思想
卓越軟件設(shè)計(jì)的特征
? 體現(xiàn)簡(jiǎn)單之美的設(shè)計(jì)方案
? 可重用的對(duì)象與組件
? 支持良好的可擴(kuò)展性
? 充分的測(cè)試覆蓋率
? 可讀性高的代碼;
案例分析 ? 代碼閱讀:通過(guò)運(yùn)用組合方法模式思想對(duì)代碼進(jìn)行重構(gòu),進(jìn)而演化為Template Method模式去除重復(fù)代碼
? 代碼閱讀:分析面向?qū)ο笤O(shè)計(jì)方法所不能解決的重復(fù)問(wèn)題,從而引入函數(shù)式思想去除重復(fù)
? 郵件服務(wù)器:分析郵件服務(wù)器代碼暴露的問(wèn)題,在可重用性、代碼可維護(hù)性、可擴(kuò)展性等諸多方面著手,剖析代碼壞味道。
面向?qū)ο蟮脑O(shè)計(jì)要素 ? 合理封裝的要點(diǎn)
? 迪米特法則
? 繼承與委派的區(qū)別
? 關(guān)注點(diǎn)分離原則
? 多態(tài)與抽象
案例分析 ? 報(bào)表系統(tǒng)之參數(shù)處理:了解封裝的本質(zhì),明確職責(zé)的分配以及智能對(duì)象的意義,理解“信息專家”模式。
? 事務(wù)處理的設(shè)計(jì):通過(guò)分析職責(zé)的承擔(dān)者,從而辨別職責(zé)的分配,并以組合橋接的方式進(jìn)行抽象的分離。
? 電子商務(wù)系統(tǒng)之訂單處理:對(duì)行為的封裝,職責(zé)的委派而非繼承的方式,進(jìn)而重構(gòu)到Command模式。
面向?qū)ο笤O(shè)計(jì)核心的SOLID原則 ? 單一職責(zé)原則(SRP):該原則是合理封裝對(duì)象,分配職責(zé)的重要原則;
? 開(kāi)放封閉原則(OCP):該原則體現(xiàn)了擴(kuò)展式開(kāi)發(fā)的核心思想;
? Liskov替換原則(LSP):可以將該原則視為是對(duì)是否正確運(yùn)用繼承的檢驗(yàn)標(biāo)準(zhǔn);
? 接口隔離原則(ISP):對(duì)于接口的粒度進(jìn)行規(guī)劃,以便于設(shè)計(jì)出更好的接口;
? 依賴倒置原則(DCP):對(duì)于依賴和解耦的分析,利用抽象保證設(shè)計(jì)的可擴(kuò)展性;
議題二:整潔代碼與重構(gòu)
編寫(xiě)整潔的代碼
? 糟糕的代碼與混亂的代價(jià),整潔代碼的藝術(shù);
? 如何對(duì)變量、方法和類進(jìn)行命名;
? 如何設(shè)計(jì)方法,遵循DRY與CQS原則;
? 如何進(jìn)行錯(cuò)誤處理和異常處理;
? 如何組織類和包;
案例分析 給出真實(shí)項(xiàng)目中真實(shí)的代碼片段,對(duì)這些代碼進(jìn)行分析,并利用整潔代碼的原則進(jìn)行改善。這些代碼涉及到的問(wèn)題包括:循環(huán)嵌套太多,方法命名不合理,缺乏足夠的封裝,性能問(wèn)題;
通過(guò)重構(gòu)改善既有代碼 ? 破窗理論與重構(gòu)的原則,包括重構(gòu)與設(shè)計(jì)的關(guān)系,重構(gòu)的時(shí)機(jī)和開(kāi)展重構(gòu)的原因
? 介紹代碼的壞味道:詳細(xì)介紹各種代碼的壞味道,包括重復(fù)的代碼、過(guò)長(zhǎng)函數(shù)、過(guò)大類、依戀情結(jié)、平行繼承體系、發(fā)散式變化、霰彈式修改等22種壞味道。
? 介紹常見(jiàn)的重構(gòu)手法,例如提取參數(shù)、提取方法、提取類、搬移方法、提取參數(shù)對(duì)象,以委托取代繼承等,并利用實(shí)際的案例展現(xiàn)如何對(duì)丑陋的代碼進(jìn)行重構(gòu)。
案例分析 對(duì)媒體管理系統(tǒng)的壞味道識(shí)別,利用重構(gòu)改善代碼,并逐步引入Strategy模式與Visitor模式,進(jìn)而改善設(shè)計(jì)。
議題三:合理的職責(zé)分配是良好設(shè)計(jì)的基礎(chǔ)
職責(zé)驅(qū)動(dòng)設(shè)計(jì)
? 職責(zé)的層次:包括職責(zé)層次的識(shí)別、職責(zé)層次與軟件架構(gòu)層次之間的關(guān)系、職責(zé)與概念、規(guī)約與實(shí)現(xiàn)
? 對(duì)象的角色:角色、職責(zé)與協(xié)作是三位一體的關(guān)系,角色是發(fā)起職責(zé)的對(duì)象,職責(zé)則應(yīng)該是對(duì)象之間的協(xié)作
? 模塊級(jí)的職責(zé)分配:如何根據(jù)職責(zé)對(duì)模塊進(jìn)行分解,了解高內(nèi)聚、松耦合原則。
案例分析 ? 對(duì)郵件服務(wù)器進(jìn)行分析,通過(guò)分辨職責(zé)層次,來(lái)改善設(shè)計(jì)。并提出需求變更,從而引入對(duì)觀察者模式、策略模式、簡(jiǎn)單工廠模式、調(diào)停者模式與職責(zé)鏈模式的對(duì)比與分析;
? 處理HTTP請(qǐng)求與應(yīng)答,體現(xiàn)信息持有者角色;
? JMS對(duì)Queue的創(chuàng)建體現(xiàn)構(gòu)造者角色;
? 稅務(wù)報(bào)告的生成體現(xiàn)服務(wù)提供者角色;
? 服務(wù)定位器體現(xiàn)協(xié)調(diào)者角色;
? 內(nèi)容驗(yàn)證器體現(xiàn)控制者角色;
? EISaaS的模塊劃分;
? 基于AKKA的REST框架Spray;
? 國(guó)際報(bào)稅系統(tǒng)的架構(gòu)演進(jìn),提出模塊重用的方式;
職責(zé)分配遵循的原則與模式 ? 分析單一職責(zé)原則:分析該原則的核心思想,關(guān)注對(duì)象的變化點(diǎn)
? 專家模式:專家模式的核心思想是信息的持有者是操作該信息的專家
? 自治對(duì)象:分析了自治對(duì)象的特征,分別包括:最小完備,穩(wěn)定空間,自我履行與獨(dú)立進(jìn)化
案例分析 ? 設(shè)備狀態(tài)的遷移:利用“自治對(duì)象”思想逐步引入State模式,并結(jié)合實(shí)際需求分析標(biāo)準(zhǔn)State模式的問(wèn)題,從而對(duì)該模式進(jìn)行改進(jìn)
議題四:應(yīng)對(duì)需求的變化,設(shè)計(jì)可擴(kuò)展的軟件
如何應(yīng)對(duì)需求的變化
? 抽象的關(guān)鍵在于尋找多個(gè)對(duì)象(或行為)具有的共同特征,并對(duì)特性進(jìn)行泛化
? 函數(shù)式非凡的抽象能力
? 識(shí)別變化點(diǎn),對(duì)變化進(jìn)行封裝
? 解耦具體依賴:介紹常見(jiàn)的解除具體依賴的方法,包括表驅(qū)動(dòng)法、配置與反射、IoC容器、慣例優(yōu)于配置
案例分析
? 項(xiàng)目管理模型的抽象,通過(guò)對(duì)多種項(xiàng)目管理過(guò)程進(jìn)行分析,對(duì)各種模型概念進(jìn)行分類,并抽象出模型的共同特征,從而簡(jiǎn)化模型;
? 電子商務(wù)系統(tǒng)的票據(jù)業(yè)務(wù)規(guī)則,引入Specification模式;
? CIMS系統(tǒng)的機(jī)器加載策略,引入Strategy模式;
? 短信服務(wù),引入Facade模式與Adpater模式;
? 人力資源系統(tǒng)考勤模塊,介紹Gateway模式;
? URL Web請(qǐng)求,講解如何解耦具體依賴;
擴(kuò)展式設(shè)計(jì) ? 擴(kuò)展式設(shè)計(jì)的過(guò)程
案例分析 ? 消息隊(duì)列規(guī)范的設(shè)計(jì):通過(guò)分析JMS、MSMQ的設(shè)計(jì),理解抽象的含義,例如理解面向接口設(shè)計(jì)、接口隔離原則、按意圖設(shè)計(jì)、Facade模式;
? 保單問(wèn)卷調(diào)查:講解如何從壞設(shè)計(jì)逐步重構(gòu)到Visitor模式;
議題五:設(shè)計(jì)模式的本質(zhì)
設(shè)計(jì)模式的境界
? 初學(xué)者:拔劍四顧心茫然,不知道該如何運(yùn)用設(shè)計(jì)模式
? 熟練者:過(guò)尤不及,為模式而模式,常常導(dǎo)致設(shè)計(jì)過(guò)度
? 精通者:無(wú)招勝有招,掌握了設(shè)計(jì)模式的本質(zhì),能夠恰如其分地運(yùn)用設(shè)計(jì)模式
設(shè)計(jì)的常見(jiàn)問(wèn)題 ? 理論與設(shè)計(jì)無(wú)法有效結(jié)合
? 過(guò)度運(yùn)用設(shè)計(jì)模式
? 急于編碼,沒(méi)有有效的設(shè)計(jì)
設(shè)計(jì)模式的本質(zhì) ? 合理的職責(zé)分配是基礎(chǔ)
? 封裝并抽象變化是核心
? 合理運(yùn)用面向?qū)ο笤O(shè)計(jì)思想
? 合理運(yùn)用面向?qū)ο笤O(shè)計(jì)原則
案例分析:JUnit框架 通過(guò)全面剖析JUnit測(cè)試框架,了解大師的設(shè)計(jì)藝術(shù),展現(xiàn)JUnit是如何保證框架的簡(jiǎn)單、可擴(kuò)展、可重用。內(nèi)容包括:
? JUnit的組件結(jié)構(gòu)
? JUnit的Test Case設(shè)計(jì)
? 如何支持Test Result顯示的擴(kuò)展
? JUnit中如何通過(guò)復(fù)雜的設(shè)計(jì)來(lái)簡(jiǎn)化用戶的使用
議題一:卓越的軟件設(shè)計(jì)思想
卓越軟件設(shè)計(jì)的特征
? 體現(xiàn)簡(jiǎn)單之美的設(shè)計(jì)方案
? 可重用的對(duì)象與組件
? 支持良好的可擴(kuò)展性
? 充分的測(cè)試覆蓋率
? 可讀性高的代碼;
案例分析
? 代碼閱讀:通過(guò)運(yùn)用組合方法模式思想對(duì)代碼進(jìn)行重構(gòu),進(jìn)而演化為Template Method模式去除重復(fù)代碼
? 代碼閱讀:分析面向?qū)ο笤O(shè)計(jì)方法所不能解決的重復(fù)問(wèn)題,從而引入函數(shù)式思想去除重復(fù)
? 郵件服務(wù)器:分析郵件服務(wù)器代碼暴露的問(wèn)題,在可重用性、代碼可維護(hù)性、可擴(kuò)展性等諸多方面著手,剖析代碼壞味道。
面向?qū)ο蟮脑O(shè)計(jì)要素
? 合理封裝的要點(diǎn)
? 迪米特法則
? 繼承與委派的區(qū)別
? 關(guān)注點(diǎn)分離原則
? 多態(tài)與抽象
案例分析
? 報(bào)表系統(tǒng)之參數(shù)處理:了解封裝的本質(zhì),明確職責(zé)的分配以及智能對(duì)象的意義,理解“信息專家”模式。
? 事務(wù)處理的設(shè)計(jì):通過(guò)分析職責(zé)的承擔(dān)者,從而辨別職責(zé)的分配,并以組合橋接的方式進(jìn)行抽象的分離。
? 電子商務(wù)系統(tǒng)之訂單處理:對(duì)行為的封裝,職責(zé)的委派而非繼承的方式,進(jìn)而重構(gòu)到Command模式。
面向?qū)ο笤O(shè)計(jì)核心的SOLID原則
? 單一職責(zé)原則(SRP):該原則是合理封裝對(duì)象,分配職責(zé)的重要原則;
? 開(kāi)放封閉原則(OCP):該原則體現(xiàn)了擴(kuò)展式開(kāi)發(fā)的核心思想;
? Liskov替換原則(LSP):可以將該原則視為是對(duì)是否正確運(yùn)用繼承的檢驗(yàn)標(biāo)準(zhǔn);
? 接口隔離原則(ISP):對(duì)于接口的粒度進(jìn)行規(guī)劃,以便于設(shè)計(jì)出更好的接口;
? 依賴倒置原則(DCP):對(duì)于依賴和解耦的分析,利用抽象保證設(shè)計(jì)的可擴(kuò)展性;
議題二:整潔代碼與重構(gòu)
編寫(xiě)整潔的代碼
? 糟糕的代碼與混亂的代價(jià),整潔代碼的藝術(shù);
? 如何對(duì)變量、方法和類進(jìn)行命名;
? 如何設(shè)計(jì)方法,遵循DRY與CQS原則;
? 如何進(jìn)行錯(cuò)誤處理和異常處理;
? 如何組織類和包;
案例分析
給出真實(shí)項(xiàng)目中真實(shí)的代碼片段,對(duì)這些代碼進(jìn)行分析,并利用整潔代碼的原則進(jìn)行改善。這些代碼涉及到的問(wèn)題包括:循環(huán)嵌套太多,方法命名不合理,缺乏足夠的封裝,性能問(wèn)題;
通過(guò)重構(gòu)改善既有代碼
? 破窗理論與重構(gòu)的原則,包括重構(gòu)與設(shè)計(jì)的關(guān)系,重構(gòu)的時(shí)機(jī)和開(kāi)展重構(gòu)的原因
? 介紹代碼的壞味道:詳細(xì)介紹各種代碼的壞味道,包括重復(fù)的代碼、過(guò)長(zhǎng)函數(shù)、過(guò)大類、依戀情結(jié)、平行繼承體系、發(fā)散式變化、霰彈式修改等22種壞味道。
? 介紹常見(jiàn)的重構(gòu)手法,例如提取參數(shù)、提取方法、提取類、搬移方法、提取參數(shù)對(duì)象,以委托取代繼承等,并利用實(shí)際的案例展現(xiàn)如何對(duì)丑陋的代碼進(jìn)行重構(gòu)。
案例分析
對(duì)媒體管理系統(tǒng)的壞味道識(shí)別,利用重構(gòu)改善代碼,并逐步引入Strategy模式與Visitor模式,進(jìn)而改善設(shè)計(jì)。
議題三:合理的職責(zé)分配是良好設(shè)計(jì)的基礎(chǔ)
職責(zé)驅(qū)動(dòng)設(shè)計(jì)
? 職責(zé)的層次:包括職責(zé)層次的識(shí)別、職責(zé)層次與軟件架構(gòu)層次之間的關(guān)系、職責(zé)與概念、規(guī)約與實(shí)現(xiàn)
? 對(duì)象的角色:角色、職責(zé)與協(xié)作是三位一體的關(guān)系,角色是發(fā)起職責(zé)的對(duì)象,職責(zé)則應(yīng)該是對(duì)象之間的協(xié)作
? 模塊級(jí)的職責(zé)分配:如何根據(jù)職責(zé)對(duì)模塊進(jìn)行分解,了解高內(nèi)聚、松耦合原則。
案例分析
? 對(duì)郵件服務(wù)器進(jìn)行分析,通過(guò)分辨職責(zé)層次,來(lái)改善設(shè)計(jì)。并提出需求變更,從而引入對(duì)觀察者模式、策略模式、簡(jiǎn)單工廠模式、調(diào)停者模式與職責(zé)鏈模式的對(duì)比與分析;
? 處理HTTP請(qǐng)求與應(yīng)答,體現(xiàn)信息持有者角色;
? JMS對(duì)Queue的創(chuàng)建體現(xiàn)構(gòu)造者角色;
? 稅務(wù)報(bào)告的生成體現(xiàn)服務(wù)提供者角色;
? 服務(wù)定位器體現(xiàn)協(xié)調(diào)者角色;
? 內(nèi)容驗(yàn)證器體現(xiàn)控制者角色;
? EISaaS的模塊劃分;
? 基于AKKA的REST框架Spray;
? 國(guó)際報(bào)稅系統(tǒng)的架構(gòu)演進(jìn),提出模塊重用的方式;
職責(zé)分配遵循的原則與模式
? 分析單一職責(zé)原則:分析該原則的核心思想,關(guān)注對(duì)象的變化點(diǎn)
? 專家模式:專家模式的核心思想是信息的持有者是操作該信息的專家
? 自治對(duì)象:分析了自治對(duì)象的特征,分別包括:最小完備,穩(wěn)定空間,自我履行與獨(dú)立進(jìn)化
案例分析
? 設(shè)備狀態(tài)的遷移:利用“自治對(duì)象”思想逐步引入State模式,并結(jié)合實(shí)際需求分析標(biāo)準(zhǔn)State模式的問(wèn)題,從而對(duì)該模式進(jìn)行改進(jìn)
議題四:應(yīng)對(duì)需求的變化,設(shè)計(jì)可擴(kuò)展的軟件
如何應(yīng)對(duì)需求的變化
? 抽象的關(guān)鍵在于尋找多個(gè)對(duì)象(或行為)具有的共同特征,并對(duì)特性進(jìn)行泛化
? 函數(shù)式非凡的抽象能力
? 識(shí)別變化點(diǎn),對(duì)變化進(jìn)行封裝
? 解耦具體依賴:介紹常見(jiàn)的解除具體依賴的方法,包括表驅(qū)動(dòng)法、配置與反射、IoC容器、慣例優(yōu)于配置
案例分析
? 項(xiàng)目管理模型的抽象,通過(guò)對(duì)多種項(xiàng)目管理過(guò)程進(jìn)行分析,對(duì)各種模型概念進(jìn)行分類,并抽象出模型的共同特征,從而簡(jiǎn)化模型;
? 電子商務(wù)系統(tǒng)的票據(jù)業(yè)務(wù)規(guī)則,引入Specification模式;
? CIMS系統(tǒng)的機(jī)器加載策略,引入Strategy模式;
? 短信服務(wù),引入Facade模式與Adpater模式;
? 人力資源系統(tǒng)考勤模塊,介紹Gateway模式;
? URL Web請(qǐng)求,講解如何解耦具體依賴;
擴(kuò)展式設(shè)計(jì)
? 擴(kuò)展式設(shè)計(jì)的過(guò)程
案例分析
? 消息隊(duì)列規(guī)范的設(shè)計(jì):通過(guò)分析JMS、MSMQ的設(shè)計(jì),理解抽象的含義,例如理解面向接口設(shè)計(jì)、接口隔離原則、按意圖設(shè)計(jì)、Facade模式;
? 保單問(wèn)卷調(diào)查:講解如何從壞設(shè)計(jì)逐步重構(gòu)到Visitor模式;
議題五:設(shè)計(jì)模式的本質(zhì)
設(shè)計(jì)模式的境界
? 初學(xué)者:拔劍四顧心茫然,不知道該如何運(yùn)用設(shè)計(jì)模式
? 熟練者:過(guò)尤不及,為模式而模式,常常導(dǎo)致設(shè)計(jì)過(guò)度
? 精通者:無(wú)招勝有招,掌握了設(shè)計(jì)模式的本質(zhì),能夠恰如其分地運(yùn)用設(shè)計(jì)模式
設(shè)計(jì)的常見(jiàn)問(wèn)題
? 理論與設(shè)計(jì)無(wú)法有效結(jié)合
? 過(guò)度運(yùn)用設(shè)計(jì)模式
? 急于編碼,沒(méi)有有效的設(shè)計(jì)
設(shè)計(jì)模式的本質(zhì)
? 合理的職責(zé)分配是基礎(chǔ)
? 封裝并抽象變化是核心
? 合理運(yùn)用面向?qū)ο笤O(shè)計(jì)思想
? 合理運(yùn)用面向?qū)ο笤O(shè)計(jì)原則
案例分析:JUnit框架
通過(guò)全面剖析JUnit測(cè)試框架,了解大師的設(shè)計(jì)藝術(shù),展現(xiàn)JUnit是如何保證框架的簡(jiǎn)單、可擴(kuò)展、可重用。內(nèi)容包括:
? JUnit的組件結(jié)構(gòu)
? JUnit的Test Case設(shè)計(jì)
? 如何支持Test Result顯示的擴(kuò)展
? JUnit中如何通過(guò)復(fù)雜的設(shè)計(jì)來(lái)簡(jiǎn)化用戶的使用

活動(dòng)詳情

提交需求