C 中實現自動註冊的工廠

2021-07-09 14:17:09 字數 513 閱讀 4660

很長時間沒有更新部落格了,不是博主懶,是因為博主在幫研究生妹子弄碩士**,定位方面的,被imu,行人航跡,雷射匹配各種虐,不說了,都是淚。

factory模式,在工程中多用了建立派生類例項,內部一般使用switch-case根據不同的key去建立不同的派生類物件。

switch(key)
對於繼承體系簡單的,這種還可以,如果對於乙個複雜的體系,比如乙個命令系統,最後其有100多個業務命令的類,那難道你還想把switch-case寫成和懶婆娘的裹腳布一樣,又臭又長,顯然是不可以的,今天我們就來實現乙個自動註冊的工廠。

其實這個設計思路我在很早之前就看過,第一次好像是在cpp部落格,第二次是在csdn,最近cpp社群「行知一」又看見了,但是他們那個只是乙個demo**,雖然這裡我們只是簡單的寫寫,但是盡量讓其可以直接使用。

其實思路很簡單,借助於map資料結構,標示類唯一的身份標記作為map的key,而value則是乙個lambda表示式,其用來產生類例項。

factory的**如下:

利用C 11實現自動註冊的工廠

工廠方法是最簡單地建立派生類物件的方法,也是很常用的,工廠方法內部使用switch case根據不同的key去建立不同的派生類物件,下面是乙個偽 message create int type 隨著時間的流逝,訊息種類越來越多,這個switch case會越來越長,我在乙個開源專案中看到過一百多個c...

利用C 11實現乙個自動註冊的工廠

工廠方法是最簡單地建立派生類物件的方法,也是很常用的,工廠方法內部使用switch case根據不同的key去建立不同的派生類物件,下面是乙個偽 message create int type 隨著時間的流逝,訊息種類越來越多,這個switch case會越來越長,我在乙個開源專案中看到過一百多個c...

利用C 11實現乙個自動註冊的工廠

工廠方法是最簡單地建立派生類物件的方法,也是很常用的,工廠方法內部使用switch case根據不同的key去建立不同的派生類物件,下面是乙個偽 message create int type 隨著時間的流逝,訊息種類越來越多,這個switch case會越來越長,我在乙個開源專案中看到過一百多個c...