軟件架構設計原則與模式_第1頁
軟件架構設計原則與模式_第2頁
軟件架構設計原則與模式_第3頁
軟件架構設計原則與模式_第4頁
軟件架構設計原則與模式_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

軟件設計原則與模式2015.08.11目前一頁\總數三十六頁\編于五點目錄一、軟件設計原則二、設計模式介紹三、設計書籍推薦目前二頁\總數三十六頁\編于五點軟件設計原則一、目前三頁\總數三十六頁\編于五點單一職責原則定義:一個模塊(類、函數)只負責一項職責益處:1.降低模塊復雜度,提高可讀性、可維護性2.降低變更的頻率、變更引起的風險目前四頁\總數三十六頁\編于五點依賴倒置原則定義:高層模塊不應依賴底層模塊,底層模塊也不應依賴高層模塊,二者都應該依賴抽象益處:1.提升系統的結構穩定性2.低耦合目前五頁\總數三十六頁\編于五點里氏替換原則定義:所有引用基類的地方必須能透明地使用其子類的對象益處:1.提升結構穩定性2.提高代碼可讀性、可維護性目前六頁\總數三十六頁\編于五點接口隔離原則定義:客戶端不應該依賴它不需要的接口益處:1.提升結構穩定性2.提高代碼可讀性、可維護性目前七頁\總數三十六頁\編于五點開閉原則定義:當軟件需要變化時,盡量通過擴展軟件實體的行為來實現變化,而不是通過修改已有的代碼來實現變化益處:1.提升系統運行穩定性2.減少測試、修改等工作量目前八頁\總數三十六頁\編于五點設計模式介紹二、目前九頁\總數三十六頁\編于五點什么是設計模式軟件設計中的成功經驗軟件設計中的交流語言特定的軟件設計上下文中,針對特定問題的解決方案可復用軟件開發的基礎目前十頁\總數三十六頁\編于五點如何創建對象?1.newxxx()2.簡單工廠(SimpleFactory)3.工廠方法(FactoryMethod)目前十一頁\總數三十六頁\編于五點newxxx()最簡單做法看到了new,就會想到“具體”。當有一群相關的具體類時,通常會寫出以下的代碼:PizzaoderPizza(Stringtype){ Pizzapizza; if(type.equals(“cheese”)){ pizza=newCheesePizza(); }elseif(type.equals(“greek”)){ pizza=newGreekPizza(); } pizza.prepare(); pizza.bake(); pizza.cut(); …}目前十二頁\總數三十六頁\編于五點工廠(Factory)PizzaoderPizza(Stringtype){ Pizzapizza;

pizza.prepare(); pizza.bake(); pizza.cut(); …}創建一個部件,來專門創建Pizza。我們稱這個部件為工廠目前十三頁\總數三十六頁\編于五點簡單工廠(SimpleFactory)publicclassSimplePizzaFactory(Stringtype){ Pizzapizza; if(type.equals(“cheese”)){ pizza=newCheesePizza(); }elseif(type.equals(“greek”)){ pizza=newGreekPizza(); }… returnpizza;}目前十四頁\總數三十六頁\編于五點使用簡單工廠后目前十五頁\總數三十六頁\編于五點使用簡單工廠后目前十六頁\總數三十六頁\編于五點簡單工廠(SimpleFactory)LNPizzaFactorylnFactory=newLNPizzaFactory();PizzaStorelnStore=newPizzaStore(lnFactory);lnStore.orderPizza(‘cheese’);SXPizzaFactorylnFactory=newSXPizzaFactory();PizzaStoresxStore=newPizzaStore(sxFactory);sxStore.orderPizza(‘cheese’);…目前十七頁\總數三十六頁\編于五點工廠方法(FactoryMethod)意圖:定義一個用于創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。適用性當一個類不知道它所必須創建的對象的類的時候。當一個類希望由它的子類來指定它所創建的對象的時候。當類將創建對象的職責委托給多個幫助子類中的某一個,并且你希望將哪一個幫助子類是代理者這一信息局部化的時候。目前十八頁\總數三十六頁\編于五點工廠方法(FactoryMethod)目前十九頁\總數三十六頁\編于五點工廠方法(FactoryMethod)目前二十頁\總數三十六頁\編于五點工廠方法(FactoryMethod)創建者類圖目前二十一頁\總數三十六頁\編于五點工廠方法(FactoryMethod)目前二十二頁\總數三十六頁\編于五點工廠方法:產品本身PublicabstractclassPizza{ Stringname; … voidprepare(){…} voidbake(){…} voidcut(){…} …}目前二十三頁\總數三十六頁\編于五點工廠方法(FactoryMethod)創建者類目前二十四頁\總數三十六頁\編于五點工廠方法(FactoryMethod)產品類目前二十五頁\總數三十六頁\編于五點工廠方法(FactoryMethod)目前二十六頁\總數三十六頁\編于五點依賴與依賴倒置目前二十七頁\總數三十六頁\編于五點依賴與依賴倒置目前二十八頁\總數三十六頁\編于五點依賴倒置原則定義:高層模塊不應依賴底層模塊,底層模塊也不應依賴高層模塊,二者都應該依賴抽象目前二十九頁\總數三十六頁\編于五點依賴與依賴倒置目前三十頁\總數三十六頁\編于五點其它常用的模式單例(Singleton)適配器(Adapter)橋接(Bridge)門面(Facade)代理(Proxy)觀察者(Observer)策略(Strategy)目前三十一頁\總數三十六頁\編于五點兩個忠告設計模式的作用是解決問題,而不是為了模式而模式我們研究設計模式的目的是實用,不是為了學術研究目前三十二頁\總數三十六頁\編于五點軟件設計書籍三、目前三十三頁\總數三十六頁\編于五點軟件設計書籍推薦敏捷軟件開發:原則、模式與實踐(RobertCMartin)HeadFirst設計模式設計模式:可復用軟件軟件設計的基礎(GoF)代碼大全(第二版)(SteveMcConnell)實現領域驅動開發(VanghnVernon)企業應用架構模式(Mart

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論