我找不到我在找的東西,並且對於C#的許多功能來說都是新的。基本上我有一個有很多方法的類,其中很多都與類似的操作有關。我正在編寫一種API,並希望最終用戶能夠通過按目的進行分組來訪問這些方法。將一個類組合在一起的方法
所以我的類有許多成員都訪問相同的數據,讓我們稱之爲ParentClass,並且我想調用ParentClass.ZoomFunctions.ZoomIn()在父類中放大訪問數據(並且最好是成員)
對於如何使用繼承我沒有一個好主意,但我找不到如何簡單地做到這一點。
我找不到我在找的東西,並且對於C#的許多功能來說都是新的。基本上我有一個有很多方法的類,其中很多都與類似的操作有關。我正在編寫一種API,並希望最終用戶能夠通過按目的進行分組來訪問這些方法。將一個類組合在一起的方法
所以我的類有許多成員都訪問相同的數據,讓我們稱之爲ParentClass,並且我想調用ParentClass.ZoomFunctions.ZoomIn()在父類中放大訪問數據(並且最好是成員)
對於如何使用繼承我沒有一個好主意,但我找不到如何簡單地做到這一點。
這聽起來像你應該創建一個接口,將你的方法組合在一起,然後創建一個接口作爲其類型的公共屬性。
例如:
interface IZoomFunctions
{
public void ZoomIn();
...
}
class ParentClass : IZoomFunctions
{
public IZoomFunctions ZoomFunctions { get; }
}
嗯......
沒有更多的瞭解你的代碼,這聽起來像您的班級正在試圖做太多。也許你應該考慮把你的API分成多個類,而不是試圖在一個類中分組方法。
考慮閱讀有關Single Responsibility Principle
和Separation of Concerns
的信息,以瞭解您的課堂設計如何改進。
嗯,它確實沒有那麼多,我只是想提高可讀性和易用性,以便將類似的功能組合在一起。接口可能是要走的路。 –
這不是關於它在做多少,而是它所做的所有事情是否真的屬於一起。 –
@EstebanAraya不幸的是這個話題很難在帖子中解釋。你將需要一本書。我會推薦閱讀Robert C Martin的Clean Code。他深入地闡述了這些概念 –
如果你想確保你的用戶只能通過你定義的路徑訪問函數(即他們必須調用ParentClass.ZoomFunctions.ZoomIn(),並且不應該被允許直接調用ParentClass.ZoomIn()),如果你想在一個類一起保存所有內容,而無需創建不同的類,您可以:
爲每個廣告的方法組的界面,就像JOHND建議:
public interface IZoomFunctions
{
public void ZoomIn();
//...
}
向你的父類添加一個屬性,該屬性返回類本身投射到你的接口:
public IZoomFunctions ZoomFunctions
{
get { return this as IZoomFunctions; }
}
然後讓你的類明確實現的接口,使原始方法私有(避免直接訪問):
class ParentClass : IZoomFunctions
{
// your stuff
public IZoomFunctions ZoomFunctions
{
get { return this as IZoomFunctions; }
}
private void ZoomIn()
{
// your real code here
}
public void IZoomFunctions.ZoomIn()
{
this.ZoomIn();
}
}
本質(含警告):「是」等於繼承。 '有'等於組成。首先閱讀http://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming) –