兩個或多個模組合併後,新模組的介面可能比原本任一個介面更簡單

通常發生在原模組各自實作問題的「一部分」時。

範例 1:HTTP 讀取與解析#

接續上一節的 HTTP 範例:

  • 原本的兩個方法之間需要介面把「請求字串」傳遞
  • 合併之後,那組介面消失了

範例 2:自動化「對的事情」#

合併後可能讓某些功能自動發生,使多數使用者完全感覺不到。

Java I/O 的反面教材(再次提及):

  • FileInputStreamBufferedInputStream 合併、緩衝改為預設
  • 絕大多數使用者根本不會察覺緩衝存在
  • 合併後的 FileInputStream 仍可提供方法停用 / 替換預設緩衝
  • 但多數使用者連這個機制都不需要學

介面要為常見情況設計得最簡單;合併剛好能成就這件事。