前不久閱讀了一下?Andrei Alexandrescu的大作《Modern C++ Design》,深受啟發(fā)。現(xiàn)寫一些讀后感,一個(gè)是促進(jìn)自己學(xué)習(xí),二者是希望大家交流,拋磚引玉。
說到底Policy Based Class Design是基于Templete模版的Templete組件設(shè)計(jì)技術(shù),就是用內(nèi)Templete來作為Policy為外Templete提供可配置的服務(wù)。
例如:
當(dāng)然Policy1也可以不依賴于模版T。同樣Policy2也可以。這樣也當(dāng)然也可以。
?
當(dāng)然第一個(gè)例子更加具有通用性。
這樣你可以代入不同的Policy Class,來改變PolicyBasedClass的行為。
而所有的配置都是在編譯階段完成的,而不是RunTime,所以沒有任何的性能損失。
有人說,我可以加個(gè)參數(shù),對(duì)這個(gè)Class做重載,當(dāng)然是可以的,而且可以獲得運(yùn)行時(shí)刻的靈活性,當(dāng)然系統(tǒng)的開銷相對(duì)也會(huì)大一些。
所以個(gè)人認(rèn)為,PolicyBasedClass更加適合于做一些Framework的工作。例如設(shè)計(jì)一個(gè)基礎(chǔ)的框架庫,這個(gè)技術(shù)就很實(shí)用。所以Loki也是這樣子的一個(gè)庫。