s2-1深入.net平臺和編程_第1頁
s2-1深入.net平臺和編程_第2頁
s2-1深入.net平臺和編程_第3頁
s2-1深入.net平臺和編程_第4頁
s2-1深入.net平臺和編程_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第八章面向?qū)ο蟾呒墤?yīng)用回顧與作業(yè)點評如何使用抽象類實現(xiàn)多態(tài)?抽象方法和虛方法的區(qū)別?預(yù)習(xí)檢查什么是設(shè)計模式?構(gòu)造函數(shù)可以為私有的嗎?本章任務(wù)模擬到Pizza商店訂購Pizza的過程模擬查看Pizza商店菜單實現(xiàn)在單窗口播放音樂列表分析并搭建“網(wǎng)絡(luò)電視精靈”類結(jié)構(gòu)理解設(shè)計模式的概念了解簡單工廠模式的應(yīng)用了解單例模式的應(yīng)用本章目標(biāo)變化帶來的麻煩需求變化,需要增加更多計算功能?Operation opr;switch (this.cmdOper.SelectedItem.ToString().Trim() case +: opr = new OperationAdd(); break; case -

2、: opr = new OperationSub(); break; 修改已編譯好的類,維護、擴展困難! 如何解決問題? 封裝變化點如何將實例化具體類的代碼從應(yīng)用中抽離或者封裝起來,使它們不會干擾應(yīng)用的其他部分? class OperationFactory public static Operation CreateOperation(string operate) Operation oper = null; switch(operate) case +: oper = new OperationAdd(); break; . return oper; OperationFactory的方

3、法專職創(chuàng)建各式“操作類”封裝創(chuàng)建對象的代碼工廠簡單工廠模式返回創(chuàng)建的對象引用演示示例:使用設(shè)計模式改造計算器什么是設(shè)計模式模式就是得到很好研究的范例走為上 圍魏救趙 聲東擊西 設(shè)計模式是軟件開發(fā)過程中經(jīng)驗的積累特定問題的經(jīng)過實踐檢驗的特定解決方法簡單工廠模式簡單工廠模式的原理應(yīng)用場合:創(chuàng)建的具體對象經(jīng)常變化父類產(chǎn)品 子類產(chǎn)品A 子類產(chǎn)品B 子類產(chǎn)品C 工廠 客戶 簡單工廠模式的應(yīng)用3-1模擬到Pizza商店訂購Pizza的過程客戶告訴Pizza商店預(yù)訂的Pizza類型每個Pizza的加工過程包括:準(zhǔn)備、烘烤、包裝簡單工廠模式的應(yīng)用3-2Pizza種類不同,制作方式不同訂購Pizza聲明為抽象類

4、,便于擴展 提取并創(chuàng)建PizzaFactory,封裝變化 private Pizza OrderPizza(string type) Pizza pizza; if (type.Equals(奶酪) pizza = new CheesePizza(); else if(type.Equals(培根) pizza.Prepare(); return pizza; 改進(jìn)Pizza菜單可能不斷改變,引起代碼變化制作過程不會修改演示示例:簡單工廠實現(xiàn)Pizza訂購簡單工廠模式的應(yīng)用3-3class PizzaFactory public static Pizza CreatePizza(string

5、type) Pizza pizza =null; switch (type) case 奶酪: pizza = new CheesePizza(); break; case 培根: pizza = new BaconPizza(); break; default: break; return pizza; 工廠處理創(chuàng)建對象的細(xì)節(jié),OrderPIzza()即它的客戶,需要時,Order一個即可!良好擴展性:Factory可以有更多客戶,比如PizzaMenu類,利用工廠取得Pizza,獲得它的價錢與描述設(shè)計模式的意義提高軟件的可復(fù)用性靈活,適應(yīng)軟件設(shè)計的變化面向?qū)ο笤趯嶋H應(yīng)用中集中體現(xiàn)創(chuàng)建不同P

6、izza的代碼 增加Pizza類型,只需改變工廠的實現(xiàn) 使用模式的最好方式:把模式裝進(jìn)腦子,在你的應(yīng)用中,尋找何處可以使用它!練習(xí)實現(xiàn)計算器訓(xùn)練要點簡單工廠模式需求分析在第6章練習(xí)的基礎(chǔ)上,使用簡單工廠優(yōu)化計算器程序?qū)崿F(xiàn)思路創(chuàng)建工廠類,實現(xiàn)CreateOperation(string type)方法修改計算相應(yīng)事件完成時間:15分鐘練習(xí)查看菜單需求說明實現(xiàn)MyPizzaShop查看菜單選擇不同的Pizza類型,顯示名稱、描述和價格完成時間:20分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解為什么需要唯一實例2-1根據(jù)用戶選擇,在播放器窗口播放不同音樂演示示例:播放選擇的

7、音樂為什么需要唯一實例2-2選擇不同文件進(jìn)行播放,彈出不同播放器窗口,如何解決?程序中有一些類應(yīng)該只存在一個實例!單例模式(Singleton)同時在不同窗口播放不同音樂?不符合聽歌習(xí)慣!實現(xiàn)獨一無二的實例如何創(chuàng)建一個對象?new 一旦有一個類,是否可以多次實例化?當(dāng)然可以如果構(gòu)造函數(shù)為private呢?可以,但在類外無法實例化如何調(diào)用呢?通過一個靜態(tài)方法獲得類的實例public MyClass private MyClass() public static MyClass GetInstance()問題解決了!演示示例:使用單例模式解決問題剖析經(jīng)典的單例模式public partial cl

8、ass FrmPlayer : Form /獨一無二的實例 private static FrmPlayer uniquePlayer; /私有構(gòu)造函數(shù) private FrmPlayer() ponent(); /檢查并創(chuàng)建唯一實例 public static FrmPlayer GetInstance() if (uniquePlayer = null) uniquePlayer = new FrmPlayer(); return uniquePlayer; Singleton類利用一個靜態(tài)變量來記錄Singleton類的唯一實例構(gòu)造函數(shù)聲明為私有,只有Singleton類才可以調(diào)用實例化

9、對象,并返回實例引用練習(xí)播放器訓(xùn)練要點單例模式需求說明實現(xiàn)在單窗口播放不同音樂文件實現(xiàn)思路搭建窗體使用單例模式實現(xiàn)播放器窗口實現(xiàn)播放功能實現(xiàn)關(guān)閉播放器過程中設(shè)置單例引用為null完成時間:30分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解綜合案例網(wǎng)絡(luò)電視精靈開發(fā)一個小型工具軟件網(wǎng)絡(luò)電視精靈電視節(jié)目單更新與解析展示節(jié)目單提醒管理節(jié)目播放偏好定制與持久化演示示例:網(wǎng)絡(luò)電視精靈案例分析2-1基本功能分析不同頻道節(jié)目單信息格式不同電視頻道展示使用TreeView控件展示電視臺及偏好電視臺節(jié)目單展示使用DataGridView控件顯示選定電視臺節(jié)目單提醒管理用戶定制提示時間,提供

10、提醒管理(添加、刪除提醒)TypeA1、節(jié)目播出時間2、黃金時段3、時段4、視頻路徑TypeB1、播出時間海峽兩岸2、節(jié)目名稱3、視頻路徑案例分析2-2初步分析類及類關(guān)系可以抽象出的類頻道類:ChannelBase節(jié)目類:TvProgram節(jié)目提醒類:Remind不同類型頻道類TypeAChannelTypeBChannel頻道工廠類:ChannelFactory頻道管理類:ChannelManager持久化信息類:SavingInfo練習(xí)搭建窗體需求說明搭建網(wǎng)絡(luò)電視精靈Splash窗體和主窗體Splash窗體1s后關(guān)閉,并打開主窗體完成時間:15分鐘練習(xí)編寫基礎(chǔ)類需求說明編寫節(jié)目類屬性:播出時間、時段、名稱、視頻路徑編寫頻道基類屬性:頻道名稱、頻道節(jié)目單位置、節(jié)目列表抽象方法:Fetch()編寫頻道子類繼承“頻道基類”,實現(xiàn)Fetch()【只寫方法聲明】編寫頻道工廠類方法:實現(xiàn)創(chuàng)建頻道子類完成時間:20分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解練習(xí)編寫管理類需求說明編寫節(jié)目提醒類屬性:節(jié)目對象、提醒時間、所屬頻道編寫持久化信息類屬性:我的收藏列表、提醒列表編寫頻道管理類屬性:所

溫馨提示

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

最新文檔

評論

0/150

提交評論