![軟件開發(fā)技術作業(yè)張紅果B14053117_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/12/7b00a47d-8782-445a-a7f4-a6efcb292919/7b00a47d-8782-445a-a7f4-a6efcb2929191.gif)
![軟件開發(fā)技術作業(yè)張紅果B14053117_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/12/7b00a47d-8782-445a-a7f4-a6efcb292919/7b00a47d-8782-445a-a7f4-a6efcb2929192.gif)
![軟件開發(fā)技術作業(yè)張紅果B14053117_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/12/7b00a47d-8782-445a-a7f4-a6efcb292919/7b00a47d-8782-445a-a7f4-a6efcb2929193.gif)
![軟件開發(fā)技術作業(yè)張紅果B14053117_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/12/7b00a47d-8782-445a-a7f4-a6efcb292919/7b00a47d-8782-445a-a7f4-a6efcb2929194.gif)
![軟件開發(fā)技術作業(yè)張紅果B14053117_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/12/7b00a47d-8782-445a-a7f4-a6efcb292919/7b00a47d-8782-445a-a7f4-a6efcb2929195.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件開發(fā)技術課程作業(yè)姓名_張紅果_學號_B14053117_ 目錄簡單工廠模式1一、創(chuàng)建型模式11、創(chuàng)建型模式12、創(chuàng)建型模式關注點1二、簡單工廠模式概述1三、簡單工廠模式結構1四、簡單工廠模式角色2五、模式優(yōu)點3六、模式缺點3七、實例說明31、實例說明32、實例類圖43、實例代碼44、結果及分析45、創(chuàng)建對象及使用方法56、實例分析57、將對象的創(chuàng)建與使用分離的其他好處68、何時不需要工廠6八、總結6 簡單工廠模式一、創(chuàng)建型模式1、創(chuàng)建型模式創(chuàng)建型模式(Creational Pattern)主要用于創(chuàng)建對象。創(chuàng)建型模式對類的實例化過程進行了抽象,能夠將軟件模塊中對象的創(chuàng)建和對象的使用分離,對
2、用戶隱藏了類的實例的創(chuàng)建細節(jié)。創(chuàng)建型模式描述如何將對象的創(chuàng)建和使用分離,讓用戶在使用對象時無須關心對象的創(chuàng)建細節(jié),從而降低系統(tǒng)的耦合度,讓設計方案更易于修改和擴展。2、創(chuàng)建型模式關注點創(chuàng)建什么(What) 由誰創(chuàng)建(Who) 何時創(chuàng)建(When)二、簡單工廠模式概述簡單工廠模式 (Simple Factory Pattern):定義一個工廠類,它可以根據(jù)參數(shù)的不同返回不同類的實例,被創(chuàng)建的實例通常都具有共同的父類。簡單工廠模式的定義: 在簡單工廠模式中用于創(chuàng)建實例的方法通常是靜態(tài)(static)方法,因此又被稱為靜態(tài)工廠方法(Static Factory Method)模式。簡單工廠模式的要點
3、:如果需要什么,只需要傳入一個正確的參數(shù),就可以獲取所需要的對象,而無須知道其創(chuàng)建細節(jié)。三、簡單工廠模式結構四、簡單工廠模式角色簡單工廠模式包含以下3個角色: Factory(工廠角色):簡單工廠模式的核心,它負責實現(xiàn)創(chuàng)建所有實例的內部 邏輯。工廠類可以被外界直接調用,創(chuàng)建所需的產(chǎn)品對象。 Product(抽象產(chǎn)品角色):簡單工廠模式所創(chuàng)建的所有對象的父類,它負責描述所有實例所共有的公共接口。 ConcreteProduct(具體產(chǎn)品角色)典型的抽象產(chǎn)品類代碼: abstract class Product /所有產(chǎn)品類的公共業(yè)務方法public void MethodSame() /公共方法
4、的實現(xiàn)/聲明抽象業(yè)務方法public abstract void MethodDiff();典型的具體產(chǎn)品類代碼:class ConcreteProductA : Product /實現(xiàn)業(yè)務方法 public override void MethodDiff() /業(yè)務方法的實現(xiàn) class Factory /靜態(tài)工廠方法 public static Product GetProduct(string arg) Product product = null; if (arg.Equals("A") product = new ConcreteProductA(); /初始化
5、設置product else if (arg.Equals("B") product = new ConcreteProductB(); /初始化設置product return product; 典型的客戶端代碼:class Program static void Main(string args) Product product; product = Factory.GetProduct("A"); /通過工廠類創(chuàng)建產(chǎn)品對象 product.MethodSame(); product.MethodDiff(); 五、模式優(yōu)點實現(xiàn)了對象創(chuàng)建和使用的分離
6、??蛻舳藷o須知道所創(chuàng)建的具體產(chǎn)品類的類名,只需要知道具體產(chǎn)品類所對應的參數(shù)即可。通過引入配置文件,可以在不修改任何客戶端代碼的情況下更換和增加新的具體產(chǎn)品類,在一定程度上提高了系統(tǒng)的靈活性。六、模式缺點工廠類集中了所有產(chǎn)品的創(chuàng)建邏輯,職責過重,一旦不能正常工作,整個系統(tǒng)都要受到影響。增加系統(tǒng)中類的個數(shù)(引入了新的工廠類),增加了系統(tǒng)的復雜度和理解難度。系統(tǒng)擴展困難,一旦添加新產(chǎn)品不得不修改工廠邏輯。由于使用了靜態(tài)工廠方法,造成工廠角色無法形成基于繼承的等級結構,工廠類不能得到很好地擴展。七、實例說明1、實例說明某軟件公司要基于C#語言開發(fā)一套圖表庫,該圖表庫可以為應用系統(tǒng)提供多種不同外觀的圖表
7、,例如柱狀圖(HistogramChart)、餅狀圖(PieChart)、折線圖(LineChart)等。該軟件公司圖表庫設計人員希望為應用系統(tǒng)開發(fā)人員提供一套靈活易用的圖表庫,通過設置不同的參數(shù)即可得到不同類型的圖表,而且可以較為方便地對圖表庫進行擴展,以便能夠在將來增加一些新類型的圖表?,F(xiàn)使用簡單工廠模式來設計該圖表庫。2、實例類圖3、實例代碼(1) Chart:抽象圖表接口,充當抽象產(chǎn)品類(2) HistogramChart:柱狀圖類,充當具體產(chǎn)品類(3) PieChart:餅狀圖類,充當具體產(chǎn)品類(4) LineChart:折線圖類,充當具體產(chǎn)品類(5) ChartFactory:圖表
8、工廠類,充當工廠類(6) Program:客戶端測試類4、結果及分析引入配置文件:App.configChart chart;chart = ChartFactory.GetChart("histogram"); /通過靜態(tài)工廠方法創(chuàng)建產(chǎn)品using System.Configuration; Chart chart;/讀取配置文件string chartStr = ConfigurationManager.AppSettings"chartType"chart = ChartFactory.GetChart(chartStr); /通過靜態(tài)工廠方法創(chuàng)建
9、產(chǎn)品5、創(chuàng)建對象及使用方法 使用new關鍵字直接創(chuàng)建對象通過反射機制創(chuàng)建對象通過克隆方法創(chuàng)建對象通過工廠類創(chuàng)建對象6、實例分析使用new關鍵字創(chuàng)建對象引入工廠類UserDAOFactory引入工廠類UserDAOFactory a 如果UserDAO的某個子類的構造函數(shù)發(fā)生改變或者需要添加或移除不同的子類,只要維護UserDAOFactory的代碼,不會影響到Login。 b 如果UserDAO的接口發(fā)生改變,例如添加、移除方法或改變方法名,只需要修改Login,不會給UserDAOFactory帶來任何影響。 兩個類A和B之間的關系應該僅僅是A創(chuàng)建B或者是A使用B,而不能兩種關系都有。將對象的創(chuàng)建和使用分離,使得系統(tǒng)更加符合單一職責原則,有利于對功能的復用和系統(tǒng)的維護。7、將對象的創(chuàng)建與使用分離的其他好處防止用來實例化一個類的數(shù)據(jù)和代碼在多個類中到處都是,可以將有關創(chuàng)建的知識搬移到一個工廠類中,解決代碼重復、創(chuàng)建蔓延的問題。 構造函數(shù)的名字都與類名相同,從構造函數(shù)和參數(shù)列表中大家很難了解不同構造函數(shù)所構造的產(chǎn)品的差異 à 將對象的創(chuàng)建過程封裝在工廠類中,可以提供一系列名字完全不同的工廠方法,每一個工廠方法對應一個構造函數(shù),客戶端可以以一種更加可讀、易懂的方式來創(chuàng)建對象。8、何時不需要工廠無須為系統(tǒng)中的每一個類都配備一個工廠類。如果一個類很簡
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代收美金合同范本
- 2025年度新型環(huán)?;炷敛牧腺忎N合同范本集錦
- 勞動生產(chǎn)合同范例
- 喬木修剪合同范本
- 公司投資電影合同范例
- 個人外貿合同范例
- 2014家裝合同范例
- 信息資產(chǎn)安全合同范本
- 借用合同范例 英文
- 旅游業(yè)個性化旅游定制服務方案
- 酒店春節(jié)營銷方案
- 營銷管理方案中的定價策略與盈利模式
- 2024年西寧城市職業(yè)技術學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 2024年臨沂市高三一模(學業(yè)水平等級考試模擬試題)物理試卷
- 廣州獵德大橋三維曲面塔清水混凝土施工技術
- 我國糖尿病視網(wǎng)膜病變臨床診療指南2022解讀
- 高級茶藝師技能鑒定(協(xié)會版)備考題庫-下(多選、判斷題匯總)
- 特種設備作業(yè)人員體檢表(叉車)
- c30混凝土路面施工方案
- 加強師德師風建設學校師德師風警示教育講座培訓課件
- 豬飼料購銷合同書
評論
0/150
提交評論