哪些是C#原生内置设计模式?

哪些是C#原生内置设计模式?,c#,design-patterns,C#,Design Patterns,C#框架版本支持哪些内置设计模式? 我想到了一些模式,比如可以在接口IObservable中找到的观察者模式。可观察到的采集、InotifyProperty更改等 请在回答中提供模式的名称空间 迭代器是一个(所有集合类和数组都可以使用foreach语句进行迭代) 另一个是观察者模式——这就是事件的本质。在4.0中添加了IObservable和ObservableCollection。操作(通常用作访问者模式) (MSDN杂志) 示例 public class Root { //Priva

C#框架版本支持哪些内置设计模式? 我想到了一些模式,比如可以在接口IObservable中找到的观察者模式。可观察到的采集、InotifyProperty更改等

请在回答中提供模式的名称空间

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

另一个是观察者模式——这就是事件的本质。在4.0中添加了IObservable和ObservableCollection。

操作
(通常用作访问者模式)

MSDN杂志

示例

public class Root
{
    //Private and not exposed in a IList property = Encapsulation
    private List<Node> _nodes = new List<Node>(); 

    public void Visit(Action<Node> visitor)
    {
        // Controlled enumeration, can for instance handle exceptions in here.
        foreach (var item in _nodes)
        {
            visitor(node);
        }
    }
}

// usage
root.Visit(node => Console.WriteLine(node));
公共类根目录
{
//私有且未在IList属性中公开=封装
私有列表_节点=新列表();
公众访问(行动访客)
{
//受控枚举,例如可以在此处处理异常。
foreach(节点中的变量项)
{
访客(节点);
}
}
}
//用法
root.Visit(node=>Console.WriteLine(node));

委托模式(这就是委托和表达式的用途)

抽象工厂:

通常使用代理模式。

使用生成器设计模式。
还有类(适配器模式)。

观察者模式也被广泛使用。

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

工厂模式。来自工厂的连接字符串和db提供程序

迭代器模式:Ienumerable,foreach语句中的IEnumerator

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

模板:用于ASP.NET类中的几个地方,您可以在这些地方重写以提供新的实现

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


可能还有更多。但这些是我脑海中浮现的创意模式

抽象工厂

  • System.Data.Common.DbProviderFactory
建筑商

  • System.Text.StringBuilder
  • System.Data.Common.DbConnectionStringBuilder
工厂法

  • 系统激活器
  • System.Net.WebRequest
原型

  • 系统可克隆
独生子女

  • System.StringComparer.InvariantCulture
  • System.StringComparer.InvariantCultureInogoreCase
结构模式

适配器

  • System.IO.StreamReader

  • System.Globalization.CultureInfo
复合材料

  • System.ComponentModel.IComponent
装饰师

  • System.IO.Stream
门面

  • 系统、环境
  • 系统字符串
飞锤

  • 系统比较器
代理

  • System.Net.WebClient
  • System.Runtime.Remoting.proxy.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.Runtime.Serialization.ISerializable
观察者

  • System.EventHandler
  • System.IObservable
陈述

  • ?
策略

  • System.Collections.Generic.IComparer
模板法

  • System.Web.UI.Page
访客

  • System.Linq.Expressions.ExpressionVisitor

很长一段时间以来,我一直认为扩展方法实现了decorator模式,但它们没有实现:decorator透明地覆盖和扩展现有方法,而扩展方法向现有类添加新方法。我仍然对是否有这样的设计模式感兴趣!链接现在断开了,但它在回程机器中:-哦,你能更新帖子吗?@jmdon:Done。谢谢添加了一个小示例作为奖励。上面包含的
ICloneable
是不正确的。原型应提供对象的深层而非浅层副本。