C#23种开发模式,陆续完善中
工廠方法模式的UML圖
講解完工廠模式的具體實(shí)現(xiàn)之后,讓我們看下工廠模式中各類之間的UML圖:
從UML圖可以看出,在工廠方法模式中,工廠類與具體產(chǎn)品類具有平行的等級(jí)結(jié)構(gòu),它們之間是一一對(duì)應(yīng)的。針對(duì)UML圖的解釋如下:
Creator類:充當(dāng)抽象工廠角色,任何具體工廠都必須繼承該抽象類
TomatoScrambledEggsFactory和ShreddedPorkWithPotatoesFactory類:充當(dāng)具體工廠角色,用來創(chuàng)建具體產(chǎn)品
Food類:充當(dāng)抽象產(chǎn)品角色,具體產(chǎn)品的抽象類。任何具體產(chǎn)品都應(yīng)該繼承該類
TomatoScrambledEggs和ShreddedPorkWithPotatoes類:充當(dāng)具體產(chǎn)品角色,實(shí)現(xiàn)抽象產(chǎn)品類對(duì)定義的抽象方法,由具體工廠類創(chuàng)建,它們之間有一一對(duì)應(yīng)的關(guān)系。
四、.NET中實(shí)現(xiàn)了工廠方法的類
.NET 類庫中也有很多實(shí)現(xiàn)了工廠方法的類,例如Asp.net中,處理程序?qū)ο笫蔷唧w用來處理請(qǐng)求,當(dāng)我們請(qǐng)求一個(gè)*.aspx的文件時(shí),此時(shí)會(huì)映射到System.Web.UI.PageHandlerFactory類上進(jìn)行處理,而對(duì)*.ashx的請(qǐng)求將映射到System.Web.UI.SimpleHandlerFactory類中(這兩個(gè)類都是繼承于IHttpHandlerFactory接口的),關(guān)于這點(diǎn)說明我們可以在“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Web.Config”文件中找到相關(guān)定義,具體定義如下:
<httpHandlers> <add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" /><add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" /><add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" /> </httpHandlers>下面我們就具體看下工廠方法模式在Asp.net中是如何實(shí)現(xiàn)的,如果對(duì)一個(gè)Index.aspx頁面發(fā)出請(qǐng)求時(shí),將會(huì)調(diào)用PageHandlerFactory中GetHandler方法來創(chuàng)建一個(gè)Index.aspx對(duì)象,它們之間的類圖關(guān)系如下:
五、總結(jié)
工廠方法模式通過面向?qū)ο缶幊讨械亩鄳B(tài)性來將對(duì)象的創(chuàng)建延遲到具體工廠中,從而解決了簡(jiǎn)單工廠模式中存在的問題,也很好地符合了開放封閉原則(即對(duì)擴(kuò)展開發(fā),對(duì)修改封閉)。
轉(zhuǎn)載于:https://www.cnblogs.com/aaaaq/p/6285894.html
總結(jié)
以上是生活随笔為你收集整理的C#23种开发模式,陆续完善中的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac下一台电脑管理多个SSH KEY(
- 下一篇: C# 反射与dynamic最佳组合