版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、【面向對象的設計原則與設計模式】,【SOA實驗室】,中國數(shù)碼技術研發(fā)中心,目錄,1.面向對象的設計原則 2.設計模式概述 3.設計模式詳解 4.設計即生活 5.設計模式討論,中國數(shù)碼技術研發(fā)中心,面向對象的設計原則,面向對象的四個基本概念 抽象 封裝(保持和促進系統(tǒng)的可維護性) 繼承(使得概念和定義可以復用) 多態(tài)(使得實現(xiàn)和應用可以復用) 設計目標 可擴展性(可擴展 Extensibility) 靈活性(可修改 Flexibility) 可插入性(可替換 Pluggability) 面向對象的基點是世界是由各種各樣的對象組成!,中國數(shù)碼技術研發(fā)中心,面向對象的設計原則,面向對象的設計原則 封
2、裝變化 針對接口編程,不要針對實現(xiàn)編程(接口隔離原則) 組合優(yōu)于繼承(合成復用原則) 開閉原則(對修改關閉,對擴展開放) 要依賴抽象,不要依賴具體類(依賴倒轉原則) 最少知識原則,只和你的密友談話(迪米特法則) 別調用我們,我們會調用你 一個類應該只有一個引起變化的原因(單一職責原則) Liskov Substitution Principle(里氏替換原則) 設計目標是方向,設計原則是方法,設計模式是手段.,中國數(shù)碼技術研發(fā)中心,設計模式詳解,策略模式: 定義了算法族,分別封裝起來,算法之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,策略模式要
3、點: 定義了算法族,分別封裝起來,算法之間可以互相替 換,此模式讓算法的變化獨立于使用算法的客戶。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,觀察者模式: 定義了對象之間的一對多依賴,這樣一來,當一個對象改變狀態(tài)時,它的所有依賴者都會收到通知并自動更新。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,觀察者模式要點: 觀察者模式定義了對象之間一對多的關系 主題(也就是可觀察者)用一個共同的接口來更新觀察者 觀察者和可觀察者之間用松耦合方式結合(loosecoupling),可觀察者不知道觀察者的細節(jié),只知道觀察者實現(xiàn)了觀察者接口 使用此模式時,你可從被觀察者處推(push)或拉(pull)數(shù)據(然而,推的方式
4、被認為更“正確”) 有多個觀察者時,不可以依賴特定的通知次序 J a v a有多種觀察者模式的實現(xiàn),包括了通用的java.util.Observable 要注意java.util.Observable實現(xiàn)上所帶來的一些問題,中國數(shù)碼技術研發(fā)中心,設計模式詳解,裝飾者模式: 裝飾者模式可以動態(tài)地將責任附加到對象上,若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,裝飾者模式要點: 裝飾者模式也可以讓我們擴展被裝飾者的行為。 裝飾者模式意味著一群裝飾者類,這些類用來包裝具體組件。 裝飾者類反映出被裝飾的組件類型(事實上,他們具有相同的類型,都經過接口或繼承實
5、現(xiàn))。 裝飾者可以在被裝飾者的行為前面與/或后面加上自己的行為, 甚至將被裝飾者的行為整個取代掉,而達到特定的目的。 你可以用無數(shù)個裝飾者包裝一個組件。 裝飾者一般對組件的客戶是透明的,除非客戶程序依賴于組件的具體類型。 裝飾者會導致設計中出現(xiàn)許多小對象,如果過度使用,會讓程序變得很復雜。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,工廠方法模式: 定義了一個創(chuàng)建對象的接口,但由子類決定要實例化的類是哪一個。工廠方法讓類把實例化推遲到子類。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,工廠模式要點: 所有的工作都是用來封裝對象的創(chuàng)建。 簡單工廠,雖然不是真正的設計模式,但仍不失為一個簡單的方法,可以將客戶程序
6、從具體類解耦。 工廠方法使用繼承,把對象的創(chuàng)建委托給子類,子類實現(xiàn)工廠方法來創(chuàng)建對象。 抽象工廠使用對象組合,對象的創(chuàng)建被實現(xiàn)在工廠接口所暴露出來的方法中。 所有工廠模式都通過減少應用程序和具體類之間的以來促進松耦合。 工廠方法允許類將實例化延遲到子類進行。 抽象工廠創(chuàng)建相關的對象家族,而不需要依賴它們的具體類。 依賴倒置原則,指導我們避免依賴具體類型,而要盡量依賴抽象。 工廠是很有威力的技巧,幫助我們針對抽象編程,而不要針對具體類編程。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,單件模式: 確保一個類只有一個實例,并提供一個全局訪問點。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,單件模式要點: 單件模式
7、確保程序中一個類最多只有一個實例。 單件模式也提供訪問這個實例的全局點。 在java中實現(xiàn)單件模式需要私有的構造器、一個靜態(tài)方法,一個靜態(tài)變量。 確定在性能和資源上的限制,然后小心地選擇適當?shù)姆桨竵韺崿F(xiàn)單件,以解決多線程的問題。 如果不是采用jdk5的jvm,雙重檢查加鎖實現(xiàn)會失效。 小心,你如果使用多個類加載器,可能導致單件失效而產生多個實例。 如果使用JVM1.2或之前的版本,你必須建立單件注冊表,以免垃圾收集器將單件回收。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,命令模式: 將“請求”封裝成對象,以便使用不同的請求、隊列或者日志來參數(shù)化其他對象,支持可撤消的操作。,中國數(shù)碼技術研發(fā)中心,設計
8、模式詳解,命令模式要點: 命令模式將發(fā)出請求的對象和執(zhí)行請求的對象解耦。 被解耦的兩者之間是通過命令對象進行溝通的,命令對象封裝了接受者和一個或一組動作。 調用者通過調用命令對象的execute()發(fā)出請求,著會使得接收者的動作被調用。 調用者可以接受命令當做參數(shù),甚至在運行時動態(tài)地進行。 命令可以支持撤消,做法是實現(xiàn)一個undo()方法來回到execute()被執(zhí)行前的狀態(tài)。 宏命令是命令的一種簡單的延伸,允許調用多個命令。宏方法也可以支持撤消。 實際操作時,很常見使用“聰明”命令對象,也就是直接實現(xiàn)了請求,而不是將工作委托給接收者。 命令也可以用來實現(xiàn)日志和事務系統(tǒng)。,中國數(shù)碼技術研發(fā)中心
9、,設計模式詳解,適配器模式: 將一個類的接口,轉換成客戶期望的另一個接口。適配器讓原來接口不兼容的類可以合作無間。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,適配器模式要點: 當需要使用一個現(xiàn)有的類而其接口并不適合你的要求時,就使用適配器 適配器改變接口以符合客戶的期望。 實現(xiàn)一個適配器可能需要一番功夫,也可能不費功夫,視目標接口的大小與復雜度而定 適配器模式有兩種實現(xiàn)形式,對象適配器和類適配器。類適配器需要用到多重繼承。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,外觀模式: 提供了一個統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口。外觀定義了一個高層接口,讓子系統(tǒng)更容易使用。,中國數(shù)碼技術研發(fā)中心,設計模式詳解
10、,外觀模式要點: 當需要簡化并統(tǒng)一一個很大的接口或者一群復雜的接口時,使用外觀。 外觀將客戶從一個復雜的子系統(tǒng)中解耦。簡化交互接口。 實現(xiàn)一個外觀,需要將子系統(tǒng)組合進外觀中,然后將工作委托給子系統(tǒng)執(zhí)行。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,模板方法模式: 在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟。,中國數(shù)碼技術研發(fā)中心,設計模式詳解,模板方法模式要點: “模板方法”定義了算法的步驟,把這些步驟的實現(xiàn)延遲到子類。 模板方法模式為我們提供了一種代碼復用的重要技巧。 模板方法的抽象類可以定義具體方法、抽象方法和鉤子。 抽象方法由子類實現(xiàn)。 鉤子是一種方法,它在抽象類中不做事,或者只做默認的事情,子類可以選擇要不要去覆蓋它。 為了防止子類改變模板方法,可以將模板方法聲明為final。 將決策權放在高層模塊中,以便決定如何以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)人力資源管理師變革管理測試考核試卷含答案
- 山石工沖突解決評優(yōu)考核試卷含答案
- 鋼琴共鳴盤制作工崗前技能評估考核試卷含答案
- 2024年都昌縣幼兒園教師招教考試備考題庫附答案
- 2024年邵陽通航職業(yè)技術學院輔導員招聘考試真題匯編附答案
- 2024年鄂州市遴選公務員筆試真題匯編附答案
- 2025安徽淮北市總工會社會化工會工作者招聘9人備考題庫附答案
- 2025年云南省公務員考試行測常識判斷題及1套完整答案
- 2025年企業(yè)市場調研流程手冊
- 2025年航空公司航班運營與安全手冊
- 2025年大學大四(預防醫(yī)學)環(huán)境衛(wèi)生學階段測試試題及答案
- 文物安全保護責任書范本
- 產房護士長年度工作業(yè)績總結與展望
- 【初中 歷史】2025-2026學年統(tǒng)編版八年級上學期歷史總復習 課件
- 2025~2026學年黑龍江省哈爾濱市道里區(qū)第七十六中學校九年級上學期9月培優(yōu)(四)化學試卷
- 2025年律師事務所黨支部書記年終述職報告
- 中國腦小血管病診治指南2025
- 中國零排放貨運走廊創(chuàng)新實踐經驗、挑戰(zhàn)與建議
- 宋代插花課件
- 2025年度耳鼻喉科工作總結及2026年工作計劃
- 2024年執(zhí)業(yè)藥師《藥學專業(yè)知識(一)》試題及答案
評論
0/150
提交評論