




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
關(guān)于對(duì)象設(shè)計(jì)你愿或者不愿,需求就在那里,日新月異你想或者不想,設(shè)計(jì)創(chuàng)新就在那里,始終持續(xù)你測(cè)或者不測(cè),Bug都在那里,多多少少結(jié)束或者不結(jié)束,干系人在那里,決策終不由己來(lái),面向?qū)ο蟮年嚑I(yíng)里,或者,讓對(duì)象思想駐進(jìn)你的心里,默然,領(lǐng)會(huì)。由衷,歡喜 ……關(guān)于對(duì)象設(shè)計(jì)你愿或者不愿,需求就在那里,日新月異1關(guān)于對(duì)象設(shè)計(jì)其實(shí),真相是:面向?qū)ο蠓椒ū旧聿⒉荒鼙WC你的設(shè)計(jì)成為優(yōu)秀的設(shè)計(jì)YoucancreateaverybadOOdesignjustaseasilyasyoucancreateaverybadnon--‐OOdesign...關(guān)于對(duì)象設(shè)計(jì)其實(shí),真相是:2面向?qū)ο笤O(shè)計(jì)過(guò)程進(jìn)行適當(dāng)?shù)念I(lǐng)域分析撰寫(xiě)問(wèn)題描述,確定系統(tǒng)的開(kāi)發(fā)任務(wù)基于問(wèn)題描述抽取需求開(kāi)發(fā)用戶界面原型識(shí)別對(duì)象類定義每個(gè)類的職責(zé)確定類之間的交互關(guān)系建立系統(tǒng)的設(shè)計(jì)模型面向?qū)ο笤O(shè)計(jì)過(guò)程進(jìn)行適當(dāng)?shù)念I(lǐng)域分析3面向?qū)ο蠼:诵睦砟顓^(qū)分接口與實(shí)現(xiàn)從具體到抽象最小接口原則面向?qū)ο蠼:诵睦砟顓^(qū)分接口與實(shí)現(xiàn)4區(qū)分接口與實(shí)現(xiàn)接口的標(biāo)準(zhǔn)化
vs.
實(shí)現(xiàn)的演化publicvoidopen(stringname)
{/*someapplication-specificprocessing
*//*calltheOracleAPItoopentheDB*//*moreapplicationspecificprocessing
*/}publicvoidopen(stringname)
{/*someapplication-specificprocessing
*//*calltheSQLAnywheretoopentheDB*//*moreapplicationspecificprocessing*/}區(qū)分接口與實(shí)現(xiàn)接口的標(biāo)準(zhǔn)化vs.實(shí)現(xiàn)的演化5接口
用戶代碼接口OracleDB2SQLAny用戶代碼接口用戶代碼接口OracleDB2SQLAny用戶代碼6UsingAbstractThinkingWhenDesigning
Interfaces設(shè)計(jì)抽象的接口UsingAbstractThinkingWhenD7抽象的接口抽
象
的
接
口師傅,請(qǐng)送我去機(jī)場(chǎng)抽象的接口抽象的接口師傅,請(qǐng)送我去機(jī)場(chǎng)8不太抽象的接口不
夠
抽
象
的
接
口右轉(zhuǎn)右轉(zhuǎn)左轉(zhuǎn)左轉(zhuǎn)左轉(zhuǎn)不太抽象的接口不夠抽象的接口9抽象的接口:向
用
戶
暴
露
盡
可
能
少
的
實(shí)
現(xiàn)
細(xì)
節(jié)讓用戶知道的關(guān)于類的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)越少越好:只給看必須的只看公開(kāi)的只為用戶的業(yè)務(wù)需求考慮最
小
用
戶
負(fù)
擔(dān)
原
則抽象的接口:向用戶暴露10確
定
用
戶用戶是誰(shuí) ? 重要程度高達(dá)50%面向服務(wù)的原則
(Services
Principle)提供服務(wù):只要能賺錢就好使
用
服
務(wù):不要太貴喔確定用戶用戶是誰(shuí) ? 重要程度高達(dá)50%提供服11識(shí)別環(huán)境約束環(huán)境對(duì)對(duì)象的行為施加約束限制條件前置條件/后置條件/例外條件…識(shí)別環(huán)境約束環(huán)境對(duì)對(duì)象的行為施加約束限制條件前置條件/后置12公共接口的識(shí)別用戶
使
用
出
租
車
對(duì)
象
的
時(shí)
候,需
要以下功
能
告知司機(jī)終點(diǎn)付錢下
車用戶
要
用
出
租
?
的時(shí)候:有出
行地點(diǎn)召喚
出租
車付錢公共接口的識(shí)別用戶使用出租車對(duì)象的13確定實(shí)現(xiàn)細(xì)節(jié)公共接口以外的內(nèi)容都可以看做是實(shí)現(xiàn)相關(guān)的用戶永遠(yuǎn)無(wú)需關(guān)注實(shí)現(xiàn)細(xì)節(jié)方法的命名和參數(shù)定義
(nameandparameterlist)編碼實(shí)現(xiàn)對(duì)實(shí)現(xiàn)的修改無(wú)須牽涉接?實(shí)現(xiàn)為用戶的期望提供解決?方案接口從用戶的角度看待對(duì)象,實(shí)現(xiàn)則是對(duì)象的果核和果肉實(shí)現(xiàn)中包含有描述對(duì)象狀態(tài)的代碼確定實(shí)現(xiàn)細(xì)節(jié)公共接口以外的內(nèi)容都可以看做是實(shí)現(xiàn)相關(guān)的14開(kāi)閉原則(Open/Closed
Principle,
OCP)最初由Bertrand
Meyer提出軟件實(shí)體在擴(kuò)展性?方?面應(yīng)該是開(kāi)放的,而在更改性方面應(yīng)該是
封閉
的。例:打印輸出設(shè)計(jì)設(shè)計(jì)1設(shè)計(jì)2開(kāi)閉原則(Open/ClosedPrinciple,OC15Liskov替換原則
(Liskov
Substitution
Principle,
LSP)最早由Liskov于1987年在OOPSLA會(huì)議上提出子類可以替換父類出現(xiàn)在父類能出現(xiàn)的任何地方Liskov替換原則(LiskovSubstitutio16違反LSP的例子publicclassRectangle
{privateinttopLe5X;privateinttopLe5Y;intwidth;int
height;publicvoidsetWidth(intwidth){this.width=width;}publicvoidsetHeight(intheight){this.height=
height;}publicintgetWidth(){return
width;}publicintgetHeight(){returnheight;}}問(wèn)題:如果將Square作為Rectangle的子類,則如何定義Square類的setWidth和setHeight方法??違反LSP的例子publicclassRectangle17解決方法:publicclassSquareextendsRectangle{publicvoidsetWidth(intwidth){super.setWidth(width);super.setHeight(width);}publicvoidsetHeight(intheight){super.setHeight(height);super.setWidth(height);}}這種解決方法是否可行??解決方法:publicclassSquareexten18考
慮
下
面
的
代
碼:publicclassTest
{publicstaGcvoidmain(String[]args){Testt=new
Test();Rectangler=new
Rectangle();Squares=newSquare();t.g(r);// t.g(s);}}privatevoidg(Rectangler)
{r.setWidth(10);r.setHeight(20);assert(r.getWidth()*r.getHeight()==
200);如果傳給方法g的參數(shù)是Rectangle類型的對(duì)象,則沒(méi)有問(wèn)題,如果是Square類型的對(duì)象,則出錯(cuò)。}?考慮下面的代碼:publicclassTes19思考題:如
何
知
道
子
類
的
行
為
符
合
父
類
的
要
求?契約式設(shè)計(jì)
(DesignbyContract)為了滿足Liskov替換原則,設(shè)計(jì)時(shí)要求:子類中方法的前置條件不能強(qiáng)于父類中相應(yīng)方法的前置條件。子類中方法的后置條件不能弱于父類中相應(yīng)方法的后置條件。Liskov
替換原則要求子類寬
入嚴(yán)出!思考題:如何知道子類的行為符合父20依賴倒置原則
(DependencyInversionPrinciple,
DIP)依賴倒置原則指的是依賴關(guān)系應(yīng)該是盡量依賴接口(或抽象類),而不是依賴于具體類。?結(jié)構(gòu)化設(shè)計(jì)中模塊間的依賴關(guān)系依賴倒置原則(DependencyInversionP21面向?qū)ο笤O(shè)計(jì)中的依賴關(guān)系OOD中的依賴關(guān)系面向?qū)ο笤O(shè)計(jì)中的依賴關(guān)系OOD中的依賴關(guān)系22接口分離原則(InterfaceSegrega:on
Principle,
ISP)在設(shè)計(jì)時(shí)采用多個(gè)和特定客戶類(client)有關(guān)的接口要比采用一個(gè)通用的接口要好。使用通用接口的設(shè)計(jì)使用分離接口的設(shè)計(jì)接口分離原則(InterfaceSegrega:onPr23好的系統(tǒng)設(shè)計(jì)的特征用戶友好易理解可靠可擴(kuò)展可移植可伸縮可重用…簡(jiǎn)單性:實(shí)現(xiàn)簡(jiǎn)單,使
用簡(jiǎn)單,理解簡(jiǎn)單,維護(hù)簡(jiǎn)單軟件老化的特征修改難很脆弱移植難重
用難粘性強(qiáng)
(設(shè)計(jì)+環(huán)境)需求變更好的系統(tǒng)設(shè)計(jì)的特征用戶友好簡(jiǎn)單性
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年商務(wù)談判的合同模板
- 六 美麗的校園-《認(rèn)識(shí)方向》(教案)二年級(jí)上冊(cè)數(shù)學(xué)青島版
- 六年級(jí)下冊(cè)數(shù)學(xué)教案-4.1 扇形統(tǒng)計(jì)圖 ︳西師大版
- 包裝的學(xué)問(wèn)(教案)2024-2025學(xué)年數(shù)學(xué)五年級(jí)下冊(cè) 北師大版
- 茶藝培訓(xùn)合同(2篇)
- 學(xué)習(xí)2025年雷鋒精神六十二周年主題活動(dòng)實(shí)施方案 合計(jì)4份
- 學(xué)習(xí)2025年雷鋒精神62周年主題活動(dòng)實(shí)施方案 (匯編4份)
- 學(xué)習(xí)2025年雷鋒精神六十二周年主題活動(dòng)實(shí)施方案 (3份)-50
- 第八單元(B卷能力篇)三年級(jí)語(yǔ)文下冊(cè)單元分層訓(xùn)練AB卷(部編版)
- 2025年廣西培賢國(guó)際職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)匯編
- 檢體診斷-頭頸部檢查(診斷學(xué)課件)
- 煤礦提升機(jī)作業(yè)理論考試參考題庫(kù)(200題)
- 新人教版七至九年級(jí)英語(yǔ)單詞表 漢譯英(含音標(biāo))
- 侯馬北車輛段2023年運(yùn)用機(jī)考復(fù)習(xí)題-曲沃作業(yè)場(chǎng)
- 手術(shù)室停電和突然停電應(yīng)急預(yù)案PPT演示課件
- 職業(yè)病危害告知卡(油漆)
- 抗震支吊架安裝檢驗(yàn)批
- 橋梁各部位加固及橋梁維修技術(shù)總結(jié)
- GB/T 40336-2021無(wú)損檢測(cè)泄漏檢測(cè)氣體參考漏孔的校準(zhǔn)
- 馬工程教材《公共財(cái)政概論》PPT-第十一章 政府預(yù)算
- FZ/T 01085-2009熱熔粘合襯剝離強(qiáng)力試驗(yàn)方法
評(píng)論
0/150
提交評(píng)論