【发布时间】:2009-08-22 19:01:29
【问题描述】:
【问题讨论】:
-
这可以作为 .net 中使用的设计模式列表。如果它符合这个问题的兴趣,我可以把它作为一个 wiki
-
可能所有的 GoF 模式
标签: .net design-patterns
【问题讨论】:
标签: .net design-patterns
.NET 框架使用 许多 四人组模式。这里只是几个例子:
创作模式
System.Data.Common.DbProviderFactory。这个类的每个成员函数都是一个工厂方法。 System.Data.IDbConnection.BeginTransaction()。创建的事务类型取决于底层 IDbConnection 实现。WebRequest.Create() 返回取决于 URL 方案的具体类型。结构模式
System.Data.SqlClient.SqlConnection、System.Data.OleDb.OleDbConnection 等。每个提供程序都是其特定数据库的适配器。System.Windows.Forms.Control 及其派生类。System.Web.UI.Control 及其派生类。System.Xml.XmlNode 及其派生类。System.Windows.Controls.Decorator(在 WPF 中)。Stream 的一些实现是围绕内部流的装饰器(例如 GZipStream、CryptoStream)。System.Xml.Serialization.XmlSerializer。 XmlSerializer 在一个非常易于使用的类后面隐藏了一项复杂的任务(包括动态生成程序集!)。System.ServiceModel.ClientBase<TChannel> 的 Web 服务代理
行为模式
System.Web.UI.Control.OnBubbleEvent() 和 System.Web.UI.Control.RaiseBubbleEvent()。 System.Windows.Input.ICommand(在 WPF 中)。System.Linq.Expressions.Expression 和相关类。System.Collections.IEnumerable。System.Collections.Generic.IEnumerable<T>。System.Data.IDataReader。 System.Linq.Expressions.ExpressionVisitor (used internally by [LINQ])【讨论】:
这是一篇讨论这个主题的文章:
Discover the Design Patterns You're Already Using in the .NET Framework
现在可以使用 ASP.NET MVC 添加 MVC 模式。 :)
编辑:由于您的编辑/请求更多信息:
这是一篇文章,列出了几种模式以及它们在框架中的使用位置。
Structural Design Patterns and .NET Framework 2.0
.NET中的Providers都是Provider模型模式:
ASP.NET 2.0 Provider Model: Introduction to the Provider Model
.NET 中的提供者模式也使用策略模式。
工厂模式在多个地方使用,这里是一个在 ASP.NET 中使用的示例。
Exploring the Factory Design Pattern
这是 .NET 中 DP 的网络广播:
MSDN Webcast: Design Patterns in .NET
我还没有看过,所以我不确定它们在框架中的使用方式有多大...
正如评论中已经提到的,GoF 模式可能都在 .NET 框架中使用。哪里不是最容易回答的,因为框架很大,除非 MS 在某些示例中列出这样的内容,否则它并不总是显而易见的。对模式越熟悉,您就越有可能注意到正在使用它的框架类。
希望我添加的额外链接对您有所帮助。
此外,dofactory 有一个 for sale kit ($79-99),它是关于教授如何在 .NET 中使用/实现 GoF 模式,但他们在阅读材料中列出了它们还将解释 MS 在框架中使用它们的位置。
【讨论】:
阅读“框架设计指南:可重用 .NET 库的约定、惯用语和模式”。本书将向您展示 .NET 所基于的真正设计模式。
【讨论】:
当然。例如,Factory 模式 用于 ADO.NET 数据提供程序类。 单例模式用于 .NET 远程处理。 Dispose 模式用于资源管理。
【讨论】:
BCL 中的 BeginXXX 和 EndXXX 方法松散地基于 Asynchronous Completion Token 模式。
【讨论】:
【讨论】:
是的,.Net 框架 BCL 中使用了许多设计模式。事实上,这是从实际角度了解设计模式用法的最佳场所。
观察者模式:实现为事件和委托
装饰器模式:在 System.IO Stream 类中实现
迭代器模式:IEnumerable & Iterator
策略模式:通过 Lambda 表达式查询(list.Where(expression))在 Linq 中实现
工厂模式:在 System.Net.WebRequest 中
适配器模式:TLB 导入/RCW(运行时可调用包装器)
请观看此视频,了解有关此主题的详细介绍。
https://www.youtube.com/watch?v=riHGGYHVoaQ&list=PL2_Cl8E2bG36PGuBGesHFPVM1s6M02JmN
【讨论】: