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