.NET 指南:抽象化实现的基类

抽象化实现的基类是被设计成用来协助开发者实现抽象类和接口(抽象化)的类。它们为抽象化而提供了实现的细节并且在一些情况下它们是不需要进行继承就是能够被使用的。例如,Collection 能够被用来创建一个集合或者能够被继承来定义一个被强类型化的集合类。

下列代码范例示范了使用 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 来作为名称的后缀。

转载于:https://www.cnblogs.com/Laeb/archive/2007/02/02/638275.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值