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

實現雙重分派機制:TypedBin 類別體系與 addToBin 多載方法設計

     編輯:Java 相關知識

雙重分派核心原理

多型只能透過方法調用表現,雙重分派需執行兩次方法調用:各結構各一次判斷類型。Trash 結構使用 addToBin(TypedBin[] tb) 遍歷陣列嘗試加入適當垃圾筒——雙重分派發生點。新建 TypedBin 階層含 add() 方法應用多型,關鍵在 add() 經「多載」處理可接受不同垃圾類型參數。雙重分派關鍵點涉及多載。

基礎類修改策略:介面隔離

基礎類 Trash 必須含 addToBin()。無原始碼控制權時:將 addToBin() 置入介面 TypedBinMember,保持 Trash 不變,繼承新特定類型 DDAluminum/DDPaper/DDGlass/DDCardboard。

完整類別實作

TypedBinMember 介面:boolean addToBin(TypedBin[] tb)。
四大具體 Trash 子類:實作 addToBin() 遍歷陣列呼叫 tb[i].add(this),參數 this 類型各異(第一次分派)。
TypedBin 抽象基礎類:Vector v、addIt() 加入集合、四個 add() 多載預設返回 false(未多載時繼續尋找)。
四大具體 Bin 子類:各多載對應 add() 呼叫 addIt() 返回 true,其餘繼承 false。
TrashBinSet:封裝各類 TypedBin 陣列,sortIntoBins() 執行雙重分派分類、binSet() 取得陣列。
主程式:ParseTrash.fillBin() 填充主筒、sortIntoBins() 分類、遍歷各 Bin 執行 Trash.sumValue() 及主筒總計。

擴展性與效率

結構建立後分類極簡單。兩次動態方法調用效率可能優於其他排序方法。main() 便利性、類型資訊獨立性佳。新增類型改動隔離:繼承 Trash 新類型含 addToBin()、繼承新 TypedBin、加入 TrashBinSet 初始化。

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