2
A
回答
0
通常Singleton類是密封的(將阻止繼承),所以派生類不會破壞Singleton。
但是,如果你必須從類派生,那麼派生類可以選擇作爲單例實現。但是你不能僅僅使用繼承過程來執行它。
0
這取決於實施。單身人士通常有私人構造函數,並可能被標記爲密封,如果單身人士類具有私人構造函數,你將無法繼承它。如果它至少受到保護,你可以。如果你只是從單例類繼承,結果將不會是單例,所以你應該遵循該模式,並使其也是單例。
2
這裏是不錯的線程安全的單例類的列表,我使用:
namespace Helpers.DesignPatterns
{
public class Singleton<T> where T : class
{
private static volatile T _instance;
private static object _syncRoot = new Object();
protected Singleton()
{
}
private static T CreateInstance()
{
ConstructorInfo cInfo = typeof(T).GetConstructor(
BindingFlags.Instance | BindingFlags.NonPublic,
null,
new Type[0],
new ParameterModifier[0]);
return (T)cInfo.Invoke(null);
}
/// <summary>
/// Точка входа синглтона
/// </summary>
public static T Instance
{
get
{
if (_instance == null)
{
lock (_syncRoot)
{
if (_instance == null)
_instance = CreateInstance();
}
}
return _instance;
}
}
}
}
它的極端簡單的創建derieved類:
class CredentialsManager : Singleton<CredentialsManager>
但通常它不是一個很好的解決方案在項目中擁有超過1個單例類。我有4我的:)
+0
+祖國祖國 – Alex
相關問題
- 1. Singleton Bean鎖類型繼承
- 2. Singleton類和使用繼承
- 3. 如何繼承singleton
- 4. 可以繼承Guice的@Singleton註解嗎?
- 5. 其他繼承類中的繼承類
- 6. 實現靜態類繼承的最佳實踐? (singleton)
- 7. Singleton應該可以繼承嗎?
- 8. 繼承Python類繼承docstrings
- 9. 繼承的類
- 10. 繼承的類
- 11. 繼承自繼承自DynamicObject的類
- 12. 不按預期繼承的類繼承
- 13. 在繼承的類
- 14. c#類的繼承
- 15. PyQt類的繼承
- 16. C++類的繼承
- 17. Vb.net繼承的類
- 18. Python的類繼承
- 19. 類繼承
- 20. 繼承基類
- 21. 類繼承
- 22. Javascript類繼承
- 23. 繼承PHP類
- 24. 繼承類
- 25. 多類繼承?
- 26. 繼承Array類
- 27. Java繼承類
- 28. 繼承類
- 29. Python類繼承
- 30. C#類繼承
你爲什麼要那樣做? –
這是可能的,直到你的課程不被'密封' – wudzik
這是由開發人員創建/使用派生類。如果你真的不相信他們,那麼不要讓他們繼承你的班級。 – aroth