實作抽象的基底類別
更新:2007 年 11 月
實作抽象的基底類別是設計來協助開發人員實作抽象類別和介面 (抽象) 的類別,這些基底類別可為抽象提供某些實作細節,而且在某些情況下不需要繼承就可以使用。例如,Collection<T> 可用來建立集合或是可以被繼承,以定義強型別集合類別。
下列程式碼範例將示範如何使用 Collection<T> 類別來建立強型別集合物件。
Public Class PointManager
Implements IEnumerable
Private pointCollection As Collection(Of Point) = New Collection(Of Point)
Public Sub AddPoint(ByVal p As Point)
pointCollection.Add(p)
End Sub
Public Function RemovePoint(ByVal p As Point) As Boolean
Return pointCollection.Remove(p)
End Function
Public Function GetEnumerator() As IEnumerator _
Implements IEnumerable.GetEnumerator
Return pointCollection.GetEnumerator
End Function
End Class
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<T> 類別來定義強型別集合。
Public Class PointCollection
Inherits Collection(Of Point)
End Class
public class PointCollection : Collection<Point> {}
CollectionBase 類別是另一個 .NET Framework 基底類別範例,此類別可協助開發人員實作非泛型集合。CollectionBase 不能直接使用,與 Collection<T> 不同。
只有當實作抽象的基底類別為使用程式庫的開發人員增加極大的價值時,才應該以此程式庫的一部分之形式提供。當基底類別只有對實作程式庫有幫助時,基底類別不應該是公開可見的。若要於內部使用基底類別來簡化程式庫的開發,公用成員應該將工作委派給基底類別,而不是從它繼承。
如果基底類別要用於公用 API,請避免使用 Base 尾碼來命名此基底類別。
如果程式庫將此基底類別公開為傳回型別或參數型別,它不應該有 Base 尾碼。
Portions Copyright 2005 Microsoft Corporation.All rights reserved.
Portions Copyright Addison-Wesley Corporation.All rights reserved.
如需設計方針的詳細資訊,請參閱由 Krzysztof Cwalina 和 Brad Abrams 所著,並由 Addison-Wesley 於 2005 年發行的「Framework 設計方針:可重複使用之 .NET 程式庫的慣例、慣用語法和模式」一書。