Sognopolis - 简单带来重用,复杂带来重复

博客园 首页 新随笔 联系 订阅 管理
  20 Posts :: 2 Stories :: 13 Comments :: 0 Trackbacks
响应一下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 阅读(455) 评论(5)  编辑 收藏 所属分类: .NET essentials

评论

#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,但是应用部分的实现就没有必要了吧?
  回复  引用  查看    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-08-05 23:36 编辑过


相关链接: