多重繼承欠缺技術, 模闆有豐富的技術. 多重繼承缺乏型别姓習, 模闆中卻大量存在. 模闆的特化無法擴張, 多重繼承卻很容易擴張. 是以, 用這兩種技術組合起來, 可以産生非常具彈性的裝置.
policy: 是用來定義一個class或class template的接口, 該接口由下列之一或全部組成:内隐型别定義, 成員函數和成員變量.
policy是一種政策, policy需要定義一個接口, 這個接口是所有某類policy所需要實作的, 如果沒有實作, 則在模闆執行個體化的時候, 編譯器會報告錯誤.
當一個宿主類派生自一些policy, 那麼這個宿主類就可以通過執行個體化不同的policy具體實作, 來生成設計的多樣化. 在設計模式的角度來講, 非常類似strategy, 但是, 這裡是編譯期決定的.
書裡還介紹了很多使用policy class時候的細節.
不過最有趣的還是組合和設計各種policy. 應該将policy設計為正交的, 即互相之間沒有關系, 這樣通過在宿主類中使用幾種不同的policy, 就可以配置出各種需要的行為, 簡直相當于機器為你自動生成代碼一樣, 即有效, 又靈活.
policy的正交設計, 應該是相當重要的.
通過在編譯期間, 用不同的policy來配置行為, 是從來沒有見過的, 大大的拓寬了思路, 宛如一片全新的空間啊.