响应一下Anders Liu的号召(
http://www.cnblogs.com/AndersLiu/archive/2007/05/29/763456.html),列几个自己经常遇到的实现
SINGLETON:System.DBNull.Value
FACTORY METHOD:System.Data.IDbConnection.CreateCommand ()、System.Data.IDbCommand.ExecuteReader
ABSTRACT FACTORY:System.Data.IDbConnection(IDbConnection.CreateCommand是工厂方法,IDbConnection接口是个抽象工厂)
PROTOTYPE:ICloneable.Clone ()
COMPOSITE:System.Xml.XmlNode派生层次结构、System.Forms.Windows.Control派生层次结构
DECORATOR:System.Forms.Windows.Form派生层次结构、System.Forms.Windows.Control派生层次结构
PROXY:System.Runtime.Remoting.Proxies.RealProxy
COMMAND:System.Data.IDbCommand
ITERATOR:System.IEnumerable
MEDIATOR:System.Forms.Windows.Form(所有子控件的中间人)
Memento:System.Drawing.Drawing2D.GraphicsState类,System.Drawing.Graphics.Save和Restore方法
OBSERVER:System.Delegate
STRATEGY:System.Array.BinarySearch (Array array, object value, IComparer comparer)
TEMPLATE METHOD:System.Collections.CollectionBase.Contains(object item)
VISITOR:System.Data.IDataRecord算是半个吧,起码实现了Double dispatch
非GoF的设计模式
Null Object: System.EventArgs.Empty、Guid.Empty
Disopse:System.IDisposable(这个似乎是微软自封的,其实就是C++的析构函数的部分代用品)
Double Dispatch:System.Data.IDataRecord和.net frameworks的基本数据类型