.NET 指南:抽象化实现的基类
2007-02-02 16:54
169 查看
抽象化实现的基类是被设计成用来协助开发者实现抽象类和接口(抽象化)的类。它们为抽象化而提供了实现的细节并且在一些情况下它们是不需要进行继承就是能够被使用的。例如,Collection 能够被用来创建一个集合或者能够被继承来定义一个被强类型化的集合类。
下列代码范例示范了使用 Collection 类来创建一个被强类型化的集合对象。
抽象化实现的基类应该只在它们为库的开发者提供重要价值的时候才被提供成库的一部分。在基类只有助于实现一个库的情况下,基类就不应该是公开可见的。要使用一个内在的基类来简化库的开发,公共成员就应该把任务委托给基类来替代从基类那里进行继承的做法。
考虑基类的抽象化,即使它们不包含任何抽象的成员。这明确地传达给用户:这个类是单独被设计成被继承的。考虑把基类存放到来自于主要情节 API 的一个单独的命名空间中。通过定义,基类就是有意的可扩展性情节并且多数用户对此都不感兴趣。避免以 Base 作为后缀对基类进行命名,如果这个类准备在公开的 API 中被使用。如果库把基类暴露成了一个返回类型或参数类型,那么它就不应该使用 Base 来作为名称的后缀。
下列代码范例示范了使用 Collection 类来创建一个被强类型化的集合对象。
public class PointManager : IEnumerable { Collection<Point> pointCollection = new Collection<Point>(); public void AddPoint(Point p) { pointCollection.Add(p); } public bool RemovePoint(Point p) { return pointCollection.Remove(p); } public IEnumerator GetEnumerator() { return pointCollection.GetEnumerator(); } }下列代码范例示范了使用 Collection 类来定义一个被强类型化的集合。
public class PointCollection : Collection<Point> {}CollectionBase 类是 .NET Framework 基类的另外一个范例。这个类能够帮助开发者实现非常规的集合。并且不能够像 Collection 和 CollectionBase 一样能够直接被使用。
抽象化实现的基类应该只在它们为库的开发者提供重要价值的时候才被提供成库的一部分。在基类只有助于实现一个库的情况下,基类就不应该是公开可见的。要使用一个内在的基类来简化库的开发,公共成员就应该把任务委托给基类来替代从基类那里进行继承的做法。
考虑基类的抽象化,即使它们不包含任何抽象的成员。这明确地传达给用户:这个类是单独被设计成被继承的。考虑把基类存放到来自于主要情节 API 的一个单独的命名空间中。通过定义,基类就是有意的可扩展性情节并且多数用户对此都不感兴趣。避免以 Base 作为后缀对基类进行命名,如果这个类准备在公开的 API 中被使用。如果库把基类暴露成了一个返回类型或参数类型,那么它就不应该使用 Base 来作为名称的后缀。
相关文章推荐
- .NET 指南:实现 Finalize 与 Dispose 来清理非托管资源
- 可以通过基类实现的几种功能。vs2008 .net 2.0
- 一起谈.NET技术,NGuestBook架构体系及实现指南
- 可以通过基类实现的几种功能。vs2008 .net 2.0
- 可以通过基类实现的几种功能。vs2008 .net 2.0
- 可以通过基类实现的几种功能。vs2008 .net 2.0
- .NET 指南:明确地实现接口的成员
- .NET 指南:实现 Equals 方法
- aspnet_isapi.dll设置图文介绍.net的程序实现伪静态
- .net下几种实现MD5算法的途径
- .net web 用KinerCode.js实现验证码
- .NET 通过 Autofac 和 DynamicProxy 实现AOP
- 灵活正确的实现.NET插件机制
- .net 的动态语言实现DCI架构模式的角色混入
- 【转】.NET完美实现伪静态页面,URLRewriter.dll下载
- 通过多线程为基于 .NET 的应用程序实现响应迅速的用户
- C++虚基类的实现机制
- 在.NET中利用委托实现窗体间安全通信
- 在.net中实现蜂鸣报警 Beep
- .Net实现微信公众平台开发接口(一) 之 “微信开发配置”