摘要: 本文討論一種簡單卻有效的插件體系結(jié)構(gòu),它使用C++,動(dòng)態(tài)鏈接庫,基于面向?qū)ο缶幊痰乃枷搿?
首先來看一下使用插件機(jī)制能給我們帶來哪些方面的好處,從而在適當(dāng)時(shí)候合理的選擇使用。
1, 增強(qiáng)代碼的透明度與一致性:因?yàn)椴寮ǔ?huì)封裝第三方類庫或是其他人編寫的代碼,需要清晰地定義出接口,用清晰一致的接口來面對(duì)所有事情。你的代碼也不會(huì)被轉(zhuǎn)換程序或是庫的特殊定制需求弄得亂七糟。
2, 改善工程的模塊化:你的代碼被清析地分成多個(gè)獨(dú)立的模塊,可以把它們安置在子工程中的文件組中。這種解耦處理使得創(chuàng)建出的組件更加容易重用。
3, 更短的編譯時(shí)間:如果僅僅是為了解釋某些類的聲明,而這些類內(nèi)部使用了外部庫,編譯器不再需要解析外部庫的頭文件了,因?yàn)榫唧w實(shí)現(xiàn)是以私有的形式完成。
4, 更換與增加組件:假如你需要向用戶發(fā)布補(bǔ)丁,那么更新單獨(dú)的插件而不是替代每一個(gè)安裝了的文件更為有效。當(dāng)使用新的渲染器或是新的單元類型來擴(kuò)展你的游戲時(shí),能過向引擎提供一組插件,可以很容易的實(shí)現(xiàn)。
5, 在關(guān)閉源代碼的工程中使用GPL代碼:一般,假如你使用了GPL發(fā)布的代碼,那么你也需要開放你
閱讀全文