




已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
設計模式速查手冊-創(chuàng)建型2010-12-28 22:46 by EricZhang(T2噬菌體), 1962 visits, 網摘, 收藏, 編輯 Is & Is Not這篇文章是僅包含模式的名稱、簡要說明、結構類圖和結構示例代碼。可用于快速瀏覽、回顧、查詢及復習設計模式。模式的意圖和使用場合來自作者的個人實踐總結。雖然示例代碼使用C#,但是盡量不會用到C#中特有的特性、接口及方法,而是起到一個通用框架說明的作用。這篇文章不是對設計模式面面俱到。對設計模式詳細而深入的探討和研究。從其它文獻中照搬的東西。保證絕對沒有錯誤(雖然我盡我所能讓其準確)。講述設計模式在C#中具體實現方法。01 Abstract Factory(抽象工廠)簡要說明抽象工廠模式擁有一組工廠類,這些工廠類實現同一個抽象工廠接口,這個接口定義了一系列創(chuàng)建方法,每一個方法創(chuàng)建一種產品,所有方法所創(chuàng)建的產品組成一個系列。不同的具體工廠類創(chuàng)建不同系列的系列產品,系列中每一種產品實現同一個接口??蛻纛愐蕾嚦橄蠊S接口及各個產品接口,并通過實例化不同的具體工廠創(chuàng)建不同的產品系列。抽象工廠適用于客戶類擁有與產品系列無關的加工邏輯的場合,此時通過抽象工廠模式,將創(chuàng)建產品系列的邏輯與加工邏輯分離,那么同樣的加工邏輯就可以作用于不同的產品系列,至于創(chuàng)建哪個系列的產品則由客戶類擁有的具體的工廠決定。結構類圖結構示例代碼view source print?/* * * Design Pattren Quick Start * 01 Abstract Factory - 抽象工廠 * */namespace DesignPatternQuickStart.AbstractFactory / / 產品A的接口 / interface IProductA / / 品種為1的產品A / class ProductA1 : IProductA / / 品種為2的產品A / class ProductA2 : IProductA / / 產品B的接口 / interface IProductB / / 品種為1的產品B / class ProductB1 : IProductB / / 品種為2的產品B / class ProductB2 : IProductB / / 抽象工廠接口 / interface IAbstractFactory IProductA CreateProductA(); IProductB CreateProductB(); / / 生產1系列的具體工廠,用于生產品種為1為產品A和B / class Factory1 : IAbstractFactory public IProductA CreateProductA() return new ProductA1(); public IProductB CreateProductB() return new ProductB1(); / / 生產2系列的具體工廠,用于生產品種為2為產品A和B / class Factory2 : IAbstractFactory public IProductA CreateProductA() return new ProductA2(); public IProductB CreateProductB() return new ProductB2(); / / 客戶類 / class Client public void OpreateMethod() IAbstractFactory factory1 = new Factory1(); IProductA productA1 = factory1.CreateProductA(); IProductB productB1 = factory1.CreateProductB(); IAbstractFactory factory2 = new Factory2(); IProductA productA2 = factory2.CreateProductA(); IProductB productB2 = factory2.CreateProductB(); 02 Builder(生成器)簡要說明生成器模式首先定義一個生成器接口,接口中定義了生成一個產品(或邏輯上可看做整體的產品)各個部分的方法及返回這個產品的方法。不同的生成器可以封裝不同的生成算法。客戶類在構造函數中通過生成器生成需要的這個產品。生成器適用于待構建對象十分復雜,并根據具體情況存在不同構建算法的場合,使用生成器模式后復雜對象的構建過程與使用過程分離。結構類圖結構示例代碼view source print?/* * * Design Pattren Quick Start * 02 Builder - 生成器 * */namespace DesignPatternQuickStart.Builder / / 含有不同模塊的產品 / class Product public int PartA get; set; public object PartB get; set; public string PartC get; set; / / 生成器接口 / interface IBuilder void BuildPartA(int partA); void BuildPartB(object partB); void BuildPartC(string partC); Product GetResult(); / / 具體的生成器 / class Builder : IBuilder protected Product _product; public Builder() this._product = new Product(); /此處可以使用任意復雜的構造算法構造不同模塊 public void BuildPartA(int partA) this._product.PartA = partA; public void BuildPartB(object partB) this._product.PartB = partB; public void BuildPartC(string partC) this._product.PartC = partC; public Product GetResult() return this._product; / / 生成器的客戶類 / class Client protected Product _product; public Client() IBuilder buider = new Builder(); buider.BuildPartA(100); buider.BuildPartB(null); buider.BuildPartC(abc); this._product = buider.GetResult(); 03 工廠方法(Factory Method)簡要說明工廠方法通過一個抽象類實現了所有對產品的加工操作代碼,唯獨將產品的構建方法寫成抽象方法。繼承這個抽象類的具體類只重寫其構建方法,這樣就實現了對于不同被構建產品復用相同的加工操作邏輯。工廠方法適用于需要在子類中才能決定實例化哪個被操作對象,同時這些被操作對象又復用相同操作邏輯的場合。結構類圖結構示例代碼view source print?/* * * Design Pattren Quick Start * 03 FactoryMethod - 工廠方法 * */namespace DesignPatternQuickStart.FactoryMethod / / 產品接口 / interface IProduct / / A類型產品 / class ProductA : IProduct / / B類型產品 / class ProductB : IProduct / / 含有工廠方法的抽象業(yè)務類 / abstract class ACreator protected abstract IProduct FactoryMethod(); public void OpreateMethod() IProduct product = FactoryMethod(); /對product的一系列操作 / / 生產A類型產品的具體業(yè)務類 / class CreatorA : ACreator protected override IProduct FactoryMethod() return new ProductA(); / / 生產B類型產品的具體業(yè)務類 / class CreatorB : ACreator protected override IProduct FactoryMethod() return new ProductB(); / / 客戶類 / class Client public void OpreateMethod() ACreator creatorA = new CreatorA(); creatorA.OpreateMethod(); ACreator creatorB = new CreatorB(); creatorB.OpreateMethod(); 04 Prototype(原型)簡要說明原型模式定義一個原型接口,其中有克隆自身的方法及此接口所有實現及后代都應該具有的方法的定義。其實現及實現的后代均重寫克隆方法,使得克隆方法返回自身的一個克隆,克隆對象具有母對象的所有特性??蛻纛愂褂貌煌瑢ο蟮目寺崿F對象的創(chuàng)建。原型模式適用于需要創(chuàng)建許多來自同一抽象的不同后代對象,同時希望通過已有對象克隆來創(chuàng)建新對象的場合。結構類圖結構示例代碼view source print?/* * * Design Pattren Quick Start * 04 Prototype - 原型 * */namespace DesignPatternQuickStart.Prototype / / 原型接口 / interface IPrototype IPrototype Clone(); / / 具體原型類A / class PrototypeA : IPrototype public string Member1 get; set; public IPrototype Clone() PrototypeA cloneObject = new PrototypeA(); cloneObject.Member1 = Member1; return cloneObject; / / 具體原型類AA / class PrototypeAA : PrototypeA public string Member2 get; set; public new IPrototype Clone() PrototypeAA cloneObject = new PrototypeAA(); cloneObject.Member1 = Member1; cloneObject.Member2 = Member2; return cloneObject; / / 客戶類 / class Client public void OpreateMethod() IPrototype prototypeA1 = new PrototypeA(); IPrototype prototypeA2 = prototypeA1.Clone(); IPrototype prototypeAA1 = new PrototypeAA(); IPrototype prototypeAA2 = prototypeAA1.Clone(); 05 Singleton(單件)簡要說明單件模式試圖保證單件類在全局只存在一個實例。常用的方法是將構造函數設為私有,然后提供一個公用靜態(tài)方法用于獲取單例類的實例,這個公用靜態(tài)方法保證每次都返回同一個實例。單例模式適用于需要保證某個類在全局只存在一個實例的場合。結構類圖結構示例代碼view source print?/* * * Design Pattren Quick Start * 05 Singleton - 單件 * */namespace DesignPatternQuic
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中學業(yè)水平考試實驗操作中常見設備問題及解決方案
- 江蘇省大豐區(qū)萬盈鎮(zhèn)沈灶初級中學2024年數學七上期末調研模擬試題含解析
- 廣東省廣州白云廣雅實驗學校2025屆七上數學期末考試試題含解析
- 四川省雅安市雨城區(qū)雅安中學2024年物理八上期末學業(yè)質量監(jiān)測模擬試題含解析
- 車輛買賣合同書及車輛改裝及年檢及保險協(xié)議
- 采石廠礦產資源開采權終止合同
- 游戲開發(fā)與編程技巧
- 醫(yī)院潔凈手術室安全隱患自查手冊
- 行業(yè)發(fā)展趨勢預測與未來展望
- 智能穿戴設備技術的發(fā)展趨勢及市場分析
- 汛期公交安全課件
- 財務報表編制與審核合同模板
- 上海閔行區(qū)教育系統(tǒng)招聘實驗員考試真題2024
- 建設部建設工程重大質量安全事故應急預案
- 2025年中航油招聘筆試參考題庫附帶答案詳解
- 2024年中國中高端電子鋁箔行業(yè)市場調查報告
- DB54∕T 0275-2023 民用建筑節(jié)能技術標準
- 2025年人教版小學五年級英語(下冊)期末試卷及答案
- 交通貨運企業(yè)-隱患排查治理和防控制度
- 中煙公司財務管理制度
- 《學習雷鋒精神爭主題班會》課件
評論
0/150
提交評論