C 中可以從類別名稱字串實例化物件嗎?
C 中是否有一種機制可以從表示類別名稱的字串實例化對象,消除了為工廠中每個潛在的派生類別明確定義 if-else 語句的需要類別?
問題:
考慮以下類別結構:
以及對應的工廠類BaseFactory,它建立在指定類別中的實例是基於指定類別名字串的類別:
但是,這種方法需要明確在BaseFactory中指定每個衍生類,隨著衍生類別數量的增長,這會變得很麻煩。
解決方案:
與 C# 等語言不同,C 本身並沒有提供一種根據運行時類型資訊動態建立物件的機制。為了實現類似的功能,可以考慮在類別名稱和物件建立函數之間建立一個映射:
使用此映射,物件實例化變為:
或者,可以註冊在程式初始化期間自動衍生類別:
這種方法消除了手動類別註冊的需要,因為它會在以下情況下自動發生:類別已定義。
總結:
雖然C 不直接支援從類別名稱字串實例化對象,但這些技術提供了一種透過映射類別來實現類似功能的方法為物件建立函數命名或透過自動化註冊過程來命名。
以上是C 可以從類別名稱字串實例化物件嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!