2010-10-28 39 views
18

无论框架版本为何,C#都支持哪些设计模式? 我在考虑可以在界面IObservable中找到的Observer模式等模式。 ObservableCollection,INotifyPropertyChanged等。哪些是C#本地内置设计模式?

请在答案中提供模式的命名空间!

+0

很长一段时间以来,我一直在想扩展方法实现装饰器模式,但他们不这样做:装饰器会透明地覆盖和扩展现有方法,而扩展方法会将新方法添加到现有类中。尽管如此,我仍然对是否有一种设计模式感兴趣! – chiccodoro 2010-10-28 08:56:36

回答

4

迭代器是一个(所有集合类和数组可以使用foreach语句进行迭代)。

另一种是观察者模式 - 几乎这是事件。在4.0中添加了IObservable和ObservableCollection。

0

的委托模式(这就是代表和expresssions是)

0

经常使用代理模式。

2

观察者模式。我们所有的活动和代表都是通过观察者模式提出的。

工厂模式。工厂连接字符串和数据库提供程序。

Iterator模式:IEnumerable的,Ienumerators在我们的foreach语句

适配器:COM通讯。运行时可调用包装(RCW)

模板:用于在几个地方尤指ASP.NET类,你可以重写,以提供新的实现

代理:对于我们所有的Web服务调用。在c#3.0中,我们也获得了代理集合。

可能还有更多。但是,这些都是来到我的脑海

5

创建模式

抽象工厂

的那些
  • System.Data.Common.DbProviderFactory

生成器

  • System.Text.StringBui lder
  • System.Data.Common。DbConnectionStringBuilder

工厂方法

  • System.Activator
  • System.Net.WebRequest

原型

  • System.ICloneable

辛格尔顿

  • System.StringComparer.InvariantCulture
  • System.StringComparer.InvariantCultureIgnoreCase

结构模式

适配器

  • 就是System.IO.StreamReader

  • System.Globalization.CultureInfo

复合

  • System.ComponentModel.IComponent

装饰

  • System.IO.Stream

门面

  • 系统环境
  • System.String

飞锤

  • System.StringComparer

代理

  • System.Net.WebClient
  • System.Runtime.Remoting.Proxies.RealProxy
  • System.ServiceModel。ICommunicationObject

行为模式

链责任

  • Microsoft.Practices.EnterpriseLibrary.Logging.Logger

命令

  • System.Windows.RoutedEventArgs

解释

  • System.IFormatProvider
  • System.Text.RegularExpressions.Regex

迭代

  • System.Collections中。 IEnumerable
  • System.Data.IDataReader

中保

  • System.Threading.Timer

备忘录

  • System.Runtime.Serialization.ISerializable

观察

  • System.EventHandler
  • System.IObservable

国家

战略

  • System.Collections.Generic.IComparer

模板方法

  • System.Web.UI.Page

游客

  • System.Linq.Expressions。ExpressionVisitor