2013年4月8日 星期一

Data Hiding 的兩種作法: Pimpl 與 Pure Virtual Interface

大型的軟體專案在開發前期通常會先將功能較獨立、且共用性高的部分規劃為函式庫。在設計 C/C++ 的函式庫接口時,特別要留意那些要公開給外部使用的 header 檔案。裡面盡可能只包含「要公開的 API 定義」,而將「只有內部才需要」的各種定義或 header 藏起來,以免相依性向外轉嫁到函式庫的使用者。這個動作稱為「Data Hiding」或「Information Hiding」。

舉一個設計不良的例子,假設你要對外公開這個 MyTool 類別,而它的 header 長這樣: