所以我有一個類A.它定義了很多的行爲(方法),但也留下很多的子類來實現。這個類永遠不會有一個實例。這只是要定義所有子類通用的行爲。 要擴展A的子類(A1,A2,A3等)都將是單例。我不希望這些子類有多個實例。從抽象類繼承的靜態類?
那麼明顯的方式做這將是創建一個抽象類A,然後靜態類A1,A2,A3,擴展A.
但很顯然,這不是在C#中允許的。我假設有一個很好的理由。微軟的人可能比我更瞭解更多關於面向對象的軟件設計。 但我只是需要一些幫助,找出爲什麼這個設計是「窮」,什麼會是一個替代更好的設計。
我正在寫使用WCF一個RESTful API。有一堆數據庫表,這個服務將在其上執行CRUD操作。有很多代碼對於所有表格都是通用的,並且很多代碼將會針對每個表格。而且,在任何給定時間只能在桌子上執行一個操作。
所以我想我可以有一個抽象類TableHandler
。然後它的多個擴展如TableAHandler
,TableBHandler
等。因爲我只想要這些子類的一個實例,所以我想讓它們成爲靜態的。
這是不允許的,因爲繼承是關於創建相關的對象類,而且你根本沒有用靜態類創建任何對象。告訴我們你想要解決什麼現實世界的問題,我們會看看我們是否可以提出解決方案。 – 2015-02-06 21:38:38
@RobertHarvey我添加了一些關於我試圖解決的問題的信息。謝謝。 – AyushISM 2015-02-06 21:55:07
使用[工廠方法](http://en.wikipedia.org/wiki/Factory_method_pattern)模式。如果你喜歡,使工廠方法單例服務的對象。 – 2015-02-06 21:55:53