首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

模擬垃圾回收站:RTTI 初探與設計缺陷分析

     編輯:Java 相關知識

問題情境:混雜垃圾的分類挑戰

垃圾進入回收站時是混雜的,程式必須在缺乏型別資訊的情況下正確分類。初版 RecycleA 使用 RTTI(執行期型別識別)實現:將所有垃圾上鑄為 Object 存入 Vector,分類時透過 instanceof 判斷具體型別並下鑄。

程式碼結構與包管理

為避免類別名稱衝突,每個版本置於獨立套件(如 c16.recyclea)。Trash 為抽象基類,含 weight、value() 及靜態 sumValue()。三個子類別 Aluminum、Paper、Glass 各自定義價值常數。main() 以亂數產生 30 筆垃圾,再用三個 Vector 分類收集。

RTTI 的誤用與維護陷阱

程式雖能正常運作,但存在嚴重缺陷:分類邏輯硬編碼了所有已知型別。新增 Cardboard 時,若忘記在分類迴圈加入 if(t instanceof Cardboard),該類別垃圾將被忽略,且編譯器不會報錯。這正是 RTTI 濫用的典型後果——「每種類型都進行測試」導致擴充性極差。後續章節將展示如何透過多型與設計模式徹底解決此問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved