資源描述:
《面向對象設計原則和設計模式的概念.pdf》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。
1、2013/10/14目標?了解軟件復用的重要性?了解面向對象實現(xiàn)軟件復用的幾大設計原則?了解什么是設計模式西安交大軟件學院內容?軟件的可維護性與可復用性?單一責任原則(SRP)?“開---閉”原則(OCP)?里氏代換原則(LSP)?依賴倒轉原則(DIP)?接口隔離原則(ISP)?合成/聚合復用原則(CARP)?迪米特法則(LoD)?設計模式的概念及歷史西安交大軟件學院12013/10/14軟件的可維護性與可復用性?軟件系統(tǒng)的可維護性?軟件系統(tǒng)的可復用性西安交大軟件學院軟件系統(tǒng)的可維護性?軟件維護的費用=軟件開發(fā)的費用×2?軟件的維護=軟件的
2、再生?導致軟件可維護性低的原因:–過于僵硬(Rigidity)?如果一個需求的變化就會引起與其相關模塊的連鎖變化–過于脆弱(Fragility)–復用率低(Immobility)?當發(fā)現(xiàn)某個軟件部分對于其他系統(tǒng)可以復用的時候,問題是將這個軟件部分剝離出來的代價和風險是巨大的–黏度過高(Viscosity)西安交大軟件學院22013/10/14軟件系統(tǒng)的設計目標?可擴展性(Extensibility)–新的性能可以很容易地加入到系統(tǒng)中–是“過于僵硬”的反面?靈活性(Flexibility)–可以允許代碼修改平穩(wěn)地發(fā)生,而不會涉及到很多其他的模
3、塊–是“過于脆弱”的反面?可插入性(Pluggability)–可以很容易的將一個類抽出去,同時將另一個有同樣接口的類加入進來–是“黏度過高”的反面西安交大軟件學院一個“Copy”程序…?寫一個程序,該程序的功能是把從鍵盤讀入的字符輸出到打印機上?為這個程序增加一個需求:需要能夠增加從磁帶讀入字符?為這個程序增加一個需求:需要能夠把讀入的字符輸出到屏幕上?…西安交大軟件學院32013/10/14系統(tǒng)的可復用性?復用(Reuse)–重復使用?軟件復用的好處–較高的生產效率?重復使用的軟件成分可以為將來的使用節(jié)省費用–較高的軟件質量?可復用的軟
4、件成分總是比不能復用的軟件成分有更多的質量保證–恰當使用復用可以改善系統(tǒng)的可維護性西安交大軟件學院傳統(tǒng)的復用?代碼的剪貼復用?算法的復用–如經典的排序算法等?數(shù)據結構的復用–如隊、棧等西安交大軟件學院42013/10/14面向對象設計的復用?數(shù)據的抽象化和繼承關系–使得概念和定義可以復用?多態(tài)性–使得實現(xiàn)和應用可以復用?抽象化和封裝–可以保持和促進系統(tǒng)的可維護性?面向對象設計的復用重點的轉移–不再集中在函數(shù)和算法等具體實現(xiàn)細節(jié)上–而是集中在最重要的含有宏觀商業(yè)邏輯的抽象層次上西安交大軟件學院面向對象設計復用對可維護性的支持?恰當?shù)奶岣呦到y(tǒng)的
5、可復用性,可以提高系統(tǒng)的可擴展性–允許一個具有同樣接口的新的類代替舊的類,是對抽現(xiàn)接口的復用–開閉原則、里氏代換原則、依賴倒轉原則、組合復用原則?恰當?shù)奶岣呦到y(tǒng)的可復用性,可以提高系統(tǒng)的靈活性–系統(tǒng)中的每一個模塊都盡可能的保持獨立,這樣在修改一個模塊的時候就不會向其他模塊傳遞修改的壓力–開閉原則、迪米特法則、接口隔離原則?恰當?shù)奶岣呦到y(tǒng)的可復用性,可以提高系統(tǒng)的可插入性–將復用定格在商業(yè)邏輯層,也就是在抽象層進行復用,這樣就可以與具體的實現(xiàn)類沒有關系了–開閉原則、里氏代換原則、組合復用原則西安交大軟件學院52013/10/14單一責任原則?
6、定義–一個類應該只承擔一個責任,即這個類只需要面對其所承擔責任的需求變化西安交大軟件學院單一責任原則publicclassOrderProcessingModule{publicvoidProcess(OrderStatusMessageorderStatusMessage){//Gettheconnectionstringfromconfiguration////gogetsomedatafromthedatabase////ApplythechangestotheOrderfromtheOrderStatusMessage////Int
7、ernationalordershaveauniquesetofbusinessrules////Shiptheorderifit'sready////TransformtheOrderobjectintoaShipment//}}這個類承擔了太多的責任西安交大軟件學院62013/10/14單一責任原則?解決方法–將一個類所承擔的多個責任分解到若干個類中西安交大軟件學院單一責任原則?Demo-Modem例子–一個Modem需要做哪些事情??Dial?Hangup?Send?Recieve西安交大軟件學院72013/10/14開-閉原則?定義
8、:–一個軟件實體應當對擴展開放,對修改關閉–Softwareentitiesshouldbeopenforextension,butclosedformodification.?