随笔-16  评论-14  文章-2  trackbacks-0

dot Net Frameworks中常见的设计模式

响应一下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的基本数据类型

posted on 2007-05-30 19:08 omnislash 阅读(565) 评论(5) 编辑 收藏

评论:
#1楼 2007-05-30 19:26 | deerchao      
.Net Framework里其实有不少地方设计得不合理.
把某些类设计成sealed倒还可以解释为要追求"性能",但是把很多类/方法设计成internal就让人郁闷了,只能微软自己用--和尚摸得,我就摸不得?

 回复 引用 查看   
#2楼 2007-05-30 22:52 | Anders Liu      
好! 正是我想要的!
 回复 引用 查看   
#3楼[楼主] 2007-05-30 22:59 | omnislash      
@Anders Liu
很高兴它能有帮助:)

 回复 引用 查看   
#4楼 2007-05-31 06:02 | 晓风残月      
@deerchao
internal的类大都是实用类或者帮助类,如果都public给你用也许会导致不可预期的效果

 回复 引用 查看   
#5楼 2007-05-31 08:52 | deerchao      
@晓风残月
问题是你看一下像Menu, TreeView这样的类,它们的实现里就用到了很多internal的东西,我们要开发一个类似的控件,肯定也需要这些东西.但是没有办法,只能自己写.如果只是一个函数,一个类就还罢了,就怕它还牵扯到比较深的继承层次,那就得把整个关系理顺了才行.
所以说,内核部分的实现可以多用点internal,但是应用部分的实现就没有必要了吧?

 回复 引用 查看   
昵称:omnislash
园龄:6年3个月
粉丝:0
关注:0
<2007年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

搜索

 
 

常用链接

我的标签

随笔分类

随笔档案

IT tips

最新评论

阅读排行榜

评论排行榜

推荐排行榜