我有一堆數據我想在一類實例化的,並且對於每個可變我要確保的方法的一個特定組也被定義。 IE:C#類的設計,而無需使用「內部」或「靜態」?
[TypeA] VarA
[TypeB] VarB
[TypeC] VarC
FA1() which is a function of VarA and VarB
FA2() which is a function of VarA and VarC
FB1() which is a function of VarB and VarA
FB2() which is a function of VarB and VarC
...
由於將有大量的變量(因此更多的功能),我想起來我的拆分源代碼轉換成可管理的塊。所以我正在尋找一種確保每個變量的所有函數都被實例化的自動方法。
我已經想出了3種可能的方法來組織我的代碼,我對他們每個人都不太滿意,我正在尋找或建議哪種方法更好(或者即使我錯過了完全不同的實現法):
1.偏類
partial class Base
{
}
partial class Base
{
[TypeA] VarA;
FA1 { .. }; // function of VarA and VarB
FA2 { .. }; // function of VarA and VarC
}
partial class Base
{
[TypeB] VarB;
FB1 { .. }; // function of VarB and VarA
FB2 { .. }; // function of VarB and VarC
}
優點:
- 簡單
- 變量只能從Base類中訪問。
- 如果有相同類型的兩個變量,然後每個變量的函數可以不同的方式實現其自身的功能。
缺點:
- 不能自動保證所有功能都爲每個變量
- 創建需要手動確保有每個函數名之間沒有名稱衝突。
注意,缺點可以通過某種(也許時間來學習T4?)
2.內部類
class Base
{
internal [ClassA] ObjA = new [ClassA]();
internal [ClassB] ObjB = new [ClassB]();
}
class [BaseClassA]
{
public [TypeA] VarA;
public virtual F1 { .. };
public virtual F2 { .. };
}
class [ClassA] : [BassClassA]
{
public override F1 { .. }; // function of VarA and ObjB.VarB
public override F2 { .. }; // function of VarA and ObjC.VarC
}
...
優點代碼生成器來解決:
- 類層次強制執行人l函數被創建並且變量在那裏被訪問。
- 通過使用虛擬功能可以創建功能,例如特定實現
缺點:
- 使用內部意味着數據可見無處不在裝配。
3。靜態數據
abstract class Data
{
static [TypeA] VarA;
static [TypeB] VarB;
...
}
abstract class [BaseClassA] : Data
{
public virtual F1 { .. };
public virtual F2 { .. };
}
class [ClassA] : [BassClassA]
{
public override F1 { .. }; // function of VarA and VarB
public override F2 { .. }; // function of VarA and VarC
}
class Base
{
[ClassA] ObjA = new [ClassA]();
[ClassB] ObjB = new [ClassB]();
}
優點:
- 系統保證所有的程序實例化
- 的數據不會被炸開所有組件周圍
- 在每一個功能,您可以直接引用其他變量每個「部分分類」解決方案
缺點:
- 使用靜態聞起來就像我剛剛重新發明的全球數據。
我想要的就是以某種方式櫻桃採摘每種方法的最佳點:
- 訪問「部分類」的變量和「靜態」方法的直接方式
- 「部分類」方法的本地數據
- 自動實施「內部」和「靜態」方法的功能實現。
我想避免:
- 在「局部類」缺乏執行函數生成的
- 數據在「內部」方法
- 的再全球訪問全球數據在「靜態」方法中的發明
如果我打算讓我的druthers我會說我想要的是以某種方式將接口應用於instan一個變量,如:
[TypeA] VarA : IFunctions;
[TypeB] VarB : IFunctions;
並以某種方式讓編譯器自動生成接口名稱和可變名稱的最終函數名稱。
因此,人們可以建議他們希望實施哪三種方法,或建議任何其他適合的方法。
ow。腦部受傷。數據是如何形成的。 – Will 2009-09-20 22:36:03