日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

C#23种开发模式,陆续完善中

發(fā)布時(shí)間:2025/7/14 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#23种开发模式,陆续完善中 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 #region 單例模式 2 #region 線程非安全單例模式 3 public class Singleton1 4 { 5 private Singleton1() { } 6 private static Singleton1 testdemo1 = null; 7 public static Singleton1 GetSingleton() 8 { 9 if (testdemo1 == null) 10 return new Singleton1(); 11 else 12 return testdemo1; 13 } 14 } 15 #endregion 16 #region 線程安全單例模式 17 public class Singleton 18 { 19 private Singleton() { } 20 private static Singleton singleton = new Singleton(); 21 public static Singleton GetSingleton() { return singleton; } 22 } 23 #endregion 24 #endregion 25 #region 工廠模式 26 public abstract class Food 27 { 28 public abstract void Print(); 29 } 30 #region 實(shí)現(xiàn)吃的方法 31 public class TomatoScrambledEggs : Food 32 { 33 public override void Print() 34 { 35 Console.WriteLine("西紅柿炒雞蛋好了"); 36 } 37 } 38 public class ShreaddedPorkWithPotatoes : Food 39 { 40 public override void Print() 41 { 42 Console.WriteLine("土豆絲炒雞蛋好了"); 43 } 44 } 45 #endregion 46 public abstract class Creator 47 { 48 public abstract Food CreateFoddFactory(); 49 } 50 public class ShreaddedPorkWithPotatoesFactory : Creator 51 { 52 public override Food CreateFoddFactory() 53 { 54 return new ShreaddedPorkWithPotatoes(); 55 } 56 } 57 public class TomatoScrambledEggsFactory : Creator 58 { 59 public override Food CreateFoddFactory() 60 { 61 return new TomatoScrambledEggs(); 62 } 63 } 64 #endregion View Code

工廠方法模式的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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。