freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

面向對象設計ppt課件-文庫吧資料

2025-05-13 08:33本頁面
  

【正文】 e split into smaller and more specific interfaces so that any clients of the interface will only know about the methods that pertain to them. 接口隔離原則 ?接口隔離原則分析 ?接口隔離原則是指使 用多個專門的接口,而不使用單一的總接口 。 ? 其英文定義為: ? Once an interface has gotten too 39。 ? 其英文定義為: ? Clients should not be forced to depend upon interfaces that they do not use. ? 注意,在該定義中的接口指的是所定義的方法?,F(xiàn)使用依賴倒轉原則對其進行重構。 依賴倒轉原則 ?依賴倒轉原則實例 ?實例說明 ? 某系統(tǒng)提供一個數(shù)據(jù)轉換模塊,可以將來自不同數(shù)據(jù)源的數(shù)據(jù)轉換成多種格式,如可以轉換來自數(shù)據(jù)庫的數(shù)據(jù) (DatabaseSource)、也可以轉換來自文本文件的數(shù)據(jù) (TextSource),轉換后的格式可以是 XML文件 (XMLTransformer)、也可以是 XLS文件 (XLSTransformer)等。如下類圖: 依賴倒轉原則 ? 現(xiàn)在 Autosystem系統(tǒng)依賴于 ICar這個抽象,而與具體的實現(xiàn)細節(jié)HondaCar:和 FordCar無關,所以實現(xiàn)細節(jié)的變化不會影響 AutoSystem.對于實現(xiàn)細節(jié)只要實現(xiàn)ICar即可。如果能使 AutoSystem模塊獨立于它所控制的具體細節(jié),而是依賴抽象,那么我們就可以服用它了。這樣會導致系統(tǒng)越來越臃腫,越來越大,而且依賴越來越多低層模塊,只有低層模塊變動, AutoSystem類就不得不跟著變動,導致系統(tǒng)設計變得非常脆弱和僵硬。這些就需要修改AutoSystem類 。 依賴倒轉原則 ? 比如一個合資汽車公司現(xiàn)在要求開發(fā)一個自動駕駛系統(tǒng),只要汽車上安裝上這個系統(tǒng),就可以實現(xiàn)無人駕駛,該系統(tǒng)可以在福特車系列和本田車系列上使用。即使實現(xiàn)細節(jié)不斷變化,只要抽象不變,客戶程序就不需要變化。 依賴倒轉原則 ? 面向過程的開發(fā),上層調用下層,上層依賴于下層,當下層劇烈變化時,上層也要跟著變化,這就會導致模塊的復用性降低而且大大提高了開發(fā)的成本。 ?實現(xiàn)開閉原則的關鍵是抽象化,并且從抽象化導出具體化實現(xiàn),如果說 開閉原則是面向對象設計的目標的話 ,那么 依賴倒轉原則就是面向對象設計的主要手段 。 ? 其英文定義為: ? High level modules should not depend upon low level modules, both should depend upon abstractions. Abstractions should not depend upon details, details should depend upon abstractions. ? 另一種表述為: ? 要 針對接口編程 , 不要針對實現(xiàn)編程 。 里氏代換原則 ? 里氏代換原則實例 ? 實例解析 DataOperator cipherA : CipherA + + setCipherA (CipherA cipherA) encrypt (String plainText) : void : String CipherA + encrypt (String plainText) : String CipherB + encrypt (String plainText) : String Client + main (String args[]) : void 依賴倒轉原則 ? 依賴倒轉原則定義 ? 依賴倒轉原則 (Dependence Inversion Principle, DIP)的定義如下: ? 高層模塊 不應該依賴低層模塊 ,它們都應該 依賴抽象 。如圖所示: 里氏代換原則 ?里氏代換原則實例 ?實例說明 ? 如果需要更換一個加密算法類或者增加并使用一個新的加密算法類,如將 CipherA改為 CipherB,則需要修改客戶類 Client和數(shù)據(jù)操作類 DataOperator的源代碼,違背了開閉原則。 ? 子類可以有自己的屬性或方法。 ? 如果我們有一個玩具手 槍,該如何定義呢?我們先在上面類圖中增加一個類 ToyGun,然后繼承于AbstractGun類,修改后的類圖如下: 里氏代換原則 ? 玩具槍是不能用來射擊的,殺不死人的,這個不應該寫shoot方法,在這種情況下業(yè)務的調用類就會出現(xiàn)問題。 里氏代換原則 ?里氏代換原則分析 喜歡動物 ?喜歡貓 因為貓是動物 ? 里氏代換原則 ?打 CS游戲,用槍射擊殺人,如下類圖: 里氏代換原則 ? 槍的主要職責是射擊,如何射擊在各個具體的子類中定義。把基類都替換成它的子類,程序將不會產(chǎn)生任何錯誤和異常,反過來則不成立,如果一個軟件實體使用的是一個子類的話,那么它不一定能夠使用基類。 ? 其英文定義為: ? If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T. ? 第二種更容易理解的定義方式如下: ? 所有引用基類(父類)的地方必須能透明地使用其子類的對象 。 開閉原則 ? 開閉原則實例 ? 實例說明 ? 某圖形界面系統(tǒng)提供了各種不同形狀的按鈕,客戶端代碼可針對這些按鈕進行編程,用戶可能會改變需求要求使用不同的按鈕,原始設計方案如圖所示: ? 現(xiàn)對該系統(tǒng)進行重構,使之滿足開閉原則的要求。 開閉原則 ? 如何做到對擴展開放,對修改封閉呢? ? 實現(xiàn)開放封閉的核心思想就是對抽象編程,而不對具體編程,因為抽象相對穩(wěn)定。 對修改封閉,意味著類一旦設計完成,就可以獨立其工作,而不要對類盡任
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1