首页 / C# / C#23种开发模式,陆续完善中
C#23种开发模式,陆续完善中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#23种开发模式,陆续完善中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2525字,纯文字阅读大概需要4分钟。
内容图文
![C#23种开发模式,陆续完善中](/upload/InfoBanner/zyjiaocheng/1103/7f02e913f1de46258c53d6d71c04812a.jpg)
![技术分享](/upload/getfiles/default/2022/11/8/20221108093025675.jpg)
![技术分享](/upload/getfiles/default/2022/11/8/20221108093026106.jpg)
1 #region 单例模式 2#region 线程非安全单例模式 3publicclass Singleton1 4 { 5private Singleton1() { } 6privatestatic Singleton1 testdemo1 = null; 7publicstatic Singleton1 GetSingleton() 8 { 9if (testdemo1 == null) 10returnnew Singleton1(); 11else12return testdemo1; 13 } 14 } 15#endregion16#region 线程安全单例模式 17publicclass Singleton 18 { 19private Singleton() { } 20privatestatic Singleton singleton = new Singleton(); 21publicstatic Singleton GetSingleton() { return singleton; } 22 } 23#endregion24#endregion25#region 工厂模式 26publicabstractclass Food 27 { 28publicabstractvoid Print(); 29 } 30#region 实现吃的方法 31publicclass TomatoScrambledEggs : Food 32 { 33publicoverridevoid Print() 34 { 35 Console.WriteLine("西红柿炒鸡蛋好了"); 36 } 37 } 38publicclass ShreaddedPorkWithPotatoes : Food 39 { 40publicoverridevoid Print() 41 { 42 Console.WriteLine("土豆丝炒鸡蛋好了"); 43 } 44 } 45#endregion46publicabstractclass Creator 47 { 48publicabstract Food CreateFoddFactory(); 49 } 50publicclass ShreaddedPorkWithPotatoesFactory : Creator 51 { 52publicoverride Food CreateFoddFactory() 53 { 54returnnew ShreaddedPorkWithPotatoes(); 55 } 56 } 57publicclass TomatoScrambledEggsFactory : Creator 58 { 59publicoverride Food CreateFoddFactory() 60 { 61returnnew TomatoScrambledEggs(); 62 } 63 } 64#endregion
工厂方法模式的UML图
讲解完工厂模式的具体实现之后,让我们看下工厂模式中各类之间的UML图:
从UML图可以看出,在工厂方法模式中,工厂类与具体产品类具有平行的等级结构,它们之间是一一对应的。针对UML图的解释如下:
Creator类:充当抽象工厂角色,任何具体工厂都必须继承该抽象类
TomatoScrambledEggsFactory和ShreddedPorkWithPotatoesFactory类:充当具体工厂角色,用来创建具体产品
Food类:充当抽象产品角色,具体产品的抽象类。任何具体产品都应该继承该类
TomatoScrambledEggs和ShreddedPorkWithPotatoes类:充当具体产品角色,实现抽象产品类对定义的抽象方法,由具体工厂类创建,它们之间有一一对应的关系。
四、.NET中实现了工厂方法的类
.NET 类库中也有很多实现了工厂方法的类,例如Asp.net中,处理程序对象是具体用来处理请求,当我们请求一个*.aspx的文件时,此时会映射到System.Web.UI.PageHandlerFactory类上进行处理,而对*.ashx的请求将映射到System.Web.UI.SimpleHandlerFactory类中(这两个类都是继承于IHttpHandlerFactory接口的),关于这点说明我们可以在“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Web.Config”文件中找到相关定义,具体定义如下:
<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中是如何实现的,如果对一个Index.aspx页面发出请求时,将会调用PageHandlerFactory中GetHandler方法来创建一个Index.aspx对象,它们之间的类图关系如下:
五、总结
工厂方法模式通过面向对象编程中的多态性来将对象的创建延迟到具体工厂中,从而解决了简单工厂模式中存在的问题,也很好地符合了开放封闭原则(即对扩展开发,对修改封闭)。
原文:http://www.cnblogs.com/aaaaq/p/6285894.html
内容总结
以上是互联网集市为您收集整理的C#23种开发模式,陆续完善中全部内容,希望文章能够帮你解决C#23种开发模式,陆续完善中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。