設(shè)計(jì)模式課件-1概述_第1頁
設(shè)計(jì)模式課件-1概述_第2頁
設(shè)計(jì)模式課件-1概述_第3頁
設(shè)計(jì)模式課件-1概述_第4頁
設(shè)計(jì)模式課件-1概述_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、任課教師:張偉芝任課教師:張偉芝第一章第一章 軟件體系結(jié)構(gòu)概述軟件體系結(jié)構(gòu)概述任課教師:張偉芝 授課教師 姓名:張偉芝 郵箱: 電話:80786208QQ: 76036466任課教師:張偉芝 課程內(nèi)容 課程簡介 課程內(nèi)容及學(xué)習(xí)方式 第一個(gè)設(shè)計(jì)模式單例模式 好設(shè)計(jì)的原則任課教師:張偉芝 課程內(nèi)容 課程簡介 課程

2、內(nèi)容及學(xué)習(xí)方式 第一個(gè)設(shè)計(jì)模式單例模式 好設(shè)計(jì)的原則任課教師:張偉芝工程師設(shè)計(jì)師分析師 架構(gòu)師項(xiàng)目經(jīng)理技術(shù)經(jīng)理CXO任課教師:張偉芝 教材及參考書任課教師:張偉芝 考核方式 必修課 36學(xué)時(shí)、2學(xué)分 平時(shí)成績:30% 平時(shí)表現(xiàn):10%(課堂提問、課堂紀(jì)律、課堂出勤) 平時(shí)作業(yè):20%(以45人為一個(gè)小組) 期末成績:70% 考試形式:閉卷、筆試THU SAGroup7任課教師:張偉芝 課程內(nèi)容 課程簡介 課程內(nèi)容及學(xué)習(xí)方

3、式 第一個(gè)設(shè)計(jì)模式單例模式 好設(shè)計(jì)的原則任課教師:張偉芝 我們講什么? 設(shè)計(jì)模式 體系結(jié)構(gòu)模式任課教師:張偉芝 什么是模式? 模式是一條由三部分組成的規(guī)則。 一個(gè)特定環(huán)境、一個(gè)問題、一個(gè)解決方案。任課教師:張偉芝 他們之間的關(guān)系任課教師:張偉芝 學(xué)習(xí)的方式環(huán)境+問題+解決方案任課教師:張偉芝任課教師:張偉芝 全國交通違法數(shù)據(jù)聯(lián)網(wǎng)環(huán)境任

4、課教師:張偉芝 全國交通違法數(shù)據(jù)聯(lián)網(wǎng)問題 平臺(tái)異構(gòu) 語言異構(gòu) 系統(tǒng)架構(gòu)異構(gòu)任課教師:張偉芝 全國交通違法數(shù)據(jù)聯(lián)網(wǎng)解決方案THU SAGroup16面向服務(wù)的體系結(jié)構(gòu)SOA!任課教師:張偉芝 課程內(nèi)容 課程簡介 課程內(nèi)容及學(xué)習(xí)方式 第一個(gè)設(shè)計(jì)模式單例模式 好設(shè)計(jì)的原則任課教師:張偉芝 第一個(gè)設(shè)計(jì)模式單例模式任課教師:張偉芝 第一個(gè)設(shè)計(jì)模式單例模式 單例模式要解決的問題獨(dú)生子女 解

5、決方案Static public partial class Form2 : Form public static Form2 instance; public static Form2 GetInstance() if (instance=null) instance = new Form2(); return instance; 任課教師:張偉芝 第一個(gè)設(shè)計(jì)模式單例模式任課教師:張偉芝 課程內(nèi)容 課程簡介 課程內(nèi)容及學(xué)習(xí)方式 第一個(gè)設(shè)計(jì)模式單例模式 好設(shè)計(jì)的原則任課教師:張偉芝zhangweizhieu

6、 設(shè)計(jì)正在“腐爛”的征兆 過于僵硬Rigidity 過于脆弱Fragility 不可重用性immobility 粘滯性過高viscosity 好的系統(tǒng)設(shè)計(jì)應(yīng)該具備如下三個(gè)性質(zhì) 可擴(kuò)展性(Extensibility) 靈活性(Flexibility) 可插入性(Pluggability)Robert C.MartinPeter Coad任課教師:張偉芝 面向?qū)ο笤O(shè)計(jì)原則設(shè)計(jì)原則名稱設(shè)計(jì)原則名稱設(shè)計(jì)原則簡介設(shè)計(jì)原則簡介重要性重要性單一職責(zé)原則單一職責(zé)原則(Single Responsibility Principle, SRP)類的職責(zé)

7、要單一,不能將太多的職責(zé)放在一個(gè)類中。開閉原則開閉原則(Open-Closed Principle, OCP)軟件實(shí)體對擴(kuò)展是開放的,但對修改是關(guān)閉的,即在不修改一個(gè)軟件實(shí)體的基礎(chǔ)上去擴(kuò)展其功能。里氏代換原則里氏代換原則(Liskov Substitution Principle, LSP)在軟件系統(tǒng)中,一個(gè)可以接受基類對象的地方必然可以接受一個(gè)子類對象。依賴倒轉(zhuǎn)原則依賴倒轉(zhuǎn)原則(Dependency Inversion Principle, DIP)要針對抽象層編程,而不要針對具體類編程。接口隔離原則接口隔離原則(Interface Segregation Principle, ISP)使用

8、多個(gè)專門的接口來取代一個(gè)統(tǒng)一的接口。 合成復(fù)用原則合成復(fù)用原則(Composite Reuse Principle, CRP)在系統(tǒng)中應(yīng)該盡量多使用組合和聚合關(guān)聯(lián)關(guān)系,盡量少使用甚至不使用繼承關(guān)系。迪米特法則迪米特法則(Law of Demeter, LoD)一個(gè)軟件實(shí)體對其他實(shí)體的引用越少越好,或者說如果兩個(gè)類不必彼此直接通信,那么這兩個(gè)類就不應(yīng)當(dāng)發(fā)生直接的相互作用,而是通過引入一個(gè)第三者發(fā)生間接交互。任課教師:張偉芝 單一職責(zé)原則 高內(nèi)聚性原則 避免相同的職責(zé)(也稱為功能)分散到不同的類中實(shí)現(xiàn)。 避免一個(gè)類承擔(dān)過多的職責(zé)。可以減少類之間的耦合任課

9、教師:張偉芝 單一職責(zé)原則示例 類的設(shè)計(jì)主要工作是“發(fā)現(xiàn)職責(zé)”并“分離職責(zé)”數(shù)據(jù)庫連接和數(shù)據(jù)庫訪問操作相互分離任課教師:張偉芝 遵守單一職責(zé)原則的設(shè)計(jì)模式 工廠模式 分離對象的“創(chuàng)建”和對象的“使用”任課教師:張偉芝 遵守單一職責(zé)原則的設(shè)計(jì)模式 模板方法模式 分離 “共性功能實(shí)現(xiàn)”和“個(gè)性擴(kuò)展”任課教師:張偉芝 遵守單一職責(zé)原則的設(shè)計(jì)模式 命令模式 分離“命令的請求者”和“命令的實(shí)現(xiàn)者”任課教師:張偉芝zhangweiz

10、 遵守單一職責(zé)原則的設(shè)計(jì)模式 代理模式 分離 “服務(wù)的請求者”和“服務(wù)的提供者”任課教師:張偉芝 遵守單一職責(zé)原則的體系結(jié)構(gòu)模式 一個(gè)模塊、子系統(tǒng)也應(yīng)該僅有一個(gè)引起它變化的原因任課教師:張偉芝 開閉原則 Open(Open for extension) 模塊的行為必須是開放的、支持?jǐn)U展的,而不是僵化的 Closed(Closed for modification) 在對模塊的功能進(jìn)行擴(kuò)展時(shí),不應(yīng)該影響或大規(guī)模地影響已有的程序模塊 絕大部分的設(shè)計(jì)模式都符合開閉原則 抽象化是開閉原則的

11、關(guān)鍵要求開發(fā)人員可以在不修改系統(tǒng)中現(xiàn)有的功能代碼的前提下,而實(shí)現(xiàn)對應(yīng)用系統(tǒng)的軟件功能進(jìn)行擴(kuò)展任課教師:張偉芝 里氏代換原則 主要是針對繼承的設(shè)計(jì)原則 子類型必須能夠替換掉它們的父類型、并出現(xiàn)在父類能夠出現(xiàn)的任何地方。 子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能。任課教師:張偉芝 里氏替換原則 子類可以實(shí)現(xiàn)父類的抽象方法,但不能覆蓋父類的非抽象方法。 子類中可以增加自己特有的方法。 當(dāng)子類的方法重載父類的方法時(shí),方法的前置條件(即方法的形參)要比父類方法的輸入?yún)?shù)更寬松。 當(dāng)子類的方法實(shí)現(xiàn)父類的抽象方法

12、時(shí),方法的后置條件(即方法的返回值)要比父類更嚴(yán)格。任課教師:張偉芝 依賴倒置原則 將依賴關(guān)系倒置為依賴接口 上層模塊不應(yīng)該依賴于下層模塊,它們共同依賴于一個(gè)抽象 父類不能依賴子類,它們都要依賴抽象類 抽象不能依賴于具體,具體應(yīng)該要依賴于抽象任課教師:張偉芝 接口隔離 一個(gè)類對另外一個(gè)類的依賴性應(yīng)當(dāng)是建立在最小的接口上 客戶端不應(yīng)該依賴那些它不需要的接口(方法)接口的污染!任課教師:張偉芝 如何避免不良好的接口設(shè)計(jì) 用多個(gè)專門的接口,而不使用單一的總接口。 一個(gè)接

13、口就只代表一個(gè)角色 使用接口隔離原則拆分接口時(shí),首先必須滿足單一職責(zé)原則任課教師:張偉芝 合成復(fù)用原則 又稱為組合/聚合復(fù)用原則 盡量使用對象組合,而不是繼承來達(dá)到復(fù)用目的 一個(gè)新的對象里通過關(guān)聯(lián)關(guān)系(包括組合關(guān)系和聚合關(guān)系)來使用一些已有的對象 新對象通過委派調(diào)用已有對象的方法達(dá)到復(fù)用其已有功能的目的簡言之:要盡量使用組合/聚合關(guān)系,少用繼承!?任課教師:張偉芝 合成復(fù)用原則 繼承復(fù)用:實(shí)現(xiàn)簡單,易于擴(kuò)展,沒有足夠的靈活性(“白箱”復(fù)用 )DBUtil+ getConnection ().: Connec

14、tionStudentDAO+findStudentById (String id)findAllStudents ()save (StudentDTO student).: StudentDTO: List: intTeacherDAO+findTeacherById (String id)findAllTeachers ()save (TeacherDTO teacher).: TeacherDTO: List: int任課教師:張偉芝 合成復(fù)用原則 組合/聚合復(fù)用:耦合度相對較低,選擇性地調(diào)用成員對象的操作;可以在運(yùn)行時(shí)動(dòng)態(tài)進(jìn)行。(“黑箱”復(fù)用

15、 )DBUtil+ getConnection ().: ConnectionStudentDAO- dBOperator : DBUtil+setDBOperator (DBUtil dBOperator)findStudentById (String id)findAllStudents ()save (StudentDTO student).: void: StudentDTO: List: intTeacherDAO- dBOperator : DBUtil+setDBOperator (DBUtil dBOperator)findTeacherById (String id)find

16、AllTeachers ()save (TeacherDTO teacher).: void: TeacherDTO: List: intNewDBUtil+ getConnection ().: Connection任課教師:張偉芝 迪米特法則 要求一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少的與其他實(shí)體發(fā)生相互作用 又稱為最少知識原則 不要和“陌生人”說話 只與你的直接朋友通信 每一個(gè)軟件單位對其他的單位都只有最少的知識,而且局限于那些與本單位密切相關(guān)的軟件單位創(chuàng)建松耦合的類任課教師:張偉芝 迪米特法則 某系統(tǒng)界面類(如F

17、orm1、Form2等類)與數(shù)據(jù)訪問類(如DAO1、DAO2等類)之間的調(diào)用關(guān)系較為復(fù)雜,如圖所示:任課教師:張偉芝 迪米特法則 如果其中的一個(gè)類需要調(diào)用另一個(gè)類的某一個(gè)方法的話,可以通過第三者轉(zhuǎn)發(fā)這個(gè)調(diào)用Form1Form2Form3Form4Form5DAO1DAO2DAO3DAO4Controller1Controller2任課教師:張偉芝 好設(shè)計(jì)的原則 單一職責(zé)原則要求在軟件系統(tǒng)中,一個(gè)類只負(fù)責(zé)一個(gè)功能領(lǐng)域中的相應(yīng)職責(zé)。 開閉原則要求一個(gè)軟件實(shí)體應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)閉,即在不修改源代碼的基礎(chǔ)上擴(kuò)展一個(gè)系統(tǒng)的行為。 里氏代換原則可以通俗表述為在軟件中如果能夠使用基類對象,那么一定能夠使用其子類對象。任課教師:張偉芝 好設(shè)計(jì)的原則 依賴倒轉(zhuǎn)原則要求抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象;要

溫馨提示

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

評論

0/150

提交評論