基於Policy的Class設計, 讀後感

多重繼承欠缺技術, 模板有豐富的技術. 多重繼承缺乏型別姓習, 模板中卻大量存在. 模板的特化無法擴張, 多重繼承卻很容易擴張. 所以, 用這兩種技術組合起來, 可以產生非常具彈性的設備.

policy: 是用來定義一個class或class template的接口, 該接口由下列之一或全部組成:內隱型別定義, 成員函數和成員變量.
policy是一種策略, policy需要定義一個接口, 這個接口是所有某類policy所需要實現的, 如果沒有實現, 則在模板實例化的時候, 編譯器會報告錯誤.
當一個宿主類派生自一些policy, 那麼這個宿主類就可以通過實例化不同的policy具體實現, 來生成設計的多樣化.  在設計模式的角度來講, 非常類似strategy, 但是, 這裏是編譯期決定的.

書裏還介紹了很多使用policy class時候的細節.

不過最有趣的還是組合和設計各種policy. 應該將policy設計爲正交的, 即相互之間沒有關係, 這樣通過在宿主類中使用幾種不同的policy, 就可以配置出各種需要的行爲, 簡直相當於機器爲你自動生成代碼一樣, 即有效, 又靈活.

policy的正交設計, 應該是相當重要的. 

通過在編譯期間, 用不同的policy來配置行爲, 是從來沒有見過的, 大大的拓寬了思路, 宛如一片全新的空間啊.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章