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