延續第 6、7 章 GUI 編輯器中管理檔案文字的類別。
反例:行導向介面#
許多學生選擇了行導向介面:
- 提供讀、插入、刪除「整行」的方法
- 內部實作簡單
但這把複雜性推給了上層:
- UI 操作幾乎不以「整行」為單位
- 鍵盤輸入會在現有行中間插入單一字元
- 複製、刪除選取範圍可能涵蓋多行的部分區段
- 上層程式碼必須自己拆行、合行,才能完成 UI 行為
改善:字元導向介面#
如同 6.3 節所述,把介面改成字元導向:
- UI 程式可以直接插入或刪除任意範圍的文字,不必拆行合行 → 變得簡單
- 文字類別的實作變複雜:若內部仍以行儲存,就得自己處理拆行 / 合行
為什麼這樣比較好#
把拆行 / 合行的複雜性封裝在文字類別內部,整體系統的複雜度反而下降。
這就是「把複雜性往下拉」——讓一個模組多累一點,換取一群上層使用者通通輕鬆。