我想了解Pro &缺點通過Singleton類對VB.Net中的類的共享(靜態)成員使用常用方法。它可能是時間,空間複雜性或最佳實踐。哪一個更好Singleton類或共享(靜態)成員函數
我有一個BankAccount類,有一些業務邏輯的方法。
GetBalance()
GetLast5Credits()
GetMiniStatement()
也有一些寫操作。
在這種情況下,訪問成員函數的哪種方法更好?共享或單身?
我想了解Pro &缺點通過Singleton類對VB.Net中的類的共享(靜態)成員使用常用方法。它可能是時間,空間複雜性或最佳實踐。哪一個更好Singleton類或共享(靜態)成員函數
我有一個BankAccount類,有一些業務邏輯的方法。
GetBalance()
GetLast5Credits()
GetMiniStatement()
也有一些寫操作。
在這種情況下,訪問成員函數的哪種方法更好?共享或單身?
這取決於您的應用程序中是否有多個BankAccount。 基本上,Static或Singleton意味着您只能有一個有問題的對象實例 - 在本例中爲BankAccount。如果你問我,只有一個BankAccount的銀行是一家很差的銀行。 :) Here是一個相當不錯的解釋,但示例代碼是在C#
都沒有。你應該使用一個依賴注入的實例。即,您不會構建代碼中只有一個實例的假設。你恰好創建了一個實例。這樣,您可以將軟件更改爲輕鬆使用多個實例。
這裏的基本想法是,你把銀行賬戶作爲你的類的構造函數的參數:
class MyClass
{
private readonly IBankAccount bankAccount;
public MyClass(IBankAccount bankAccount)
{
this.bankAccount=bankAccount;
}
}
由於手動創建這樣的一個類可以是惱人,如果你需要大量的傳遞你通常使用依賴注入/ IoC容器爲你做。
靜態方法應該用於無狀態的無副作用輔助函數。 Math
和Enumerable
有很好的靜態方法的例子。
一般來說,你應該避免全局可變狀態。而且一個銀行賬戶顯然是可變的。這裏一個典型的單身人士是較小的邪惡(你可以用實現代替測試目的),但這仍然是一個不好的選擇。
+1,但是一個例子或至少一個鏈接可以幫助人們理解「依賴注入實例」的含義。 –
就個人而言,我更喜歡singleton類爲了單元測試。你可以模擬一個實例類,但是你不能模擬一個靜態類。
我不相信你想要麼在這裏...
但以供將來參考,共享類,你把它不應該有任何與維護狀態 - 每個靜態方法應該只與工作傳入的參數。這使得這種類僅適用於實用程序功能。
如果您在內存中持續保存與帳戶有關的數據,則單身人士只能在此處使用。然後你可能實現一個單身作爲索引器,包含銀行帳戶記錄的集合,但你必須注意競爭條件。
這確實是重複的,但我懶得搜索。 – CodesInChaos