用接口模擬可伸縮枚舉(34)

一、枚舉的可伸縮性最後證實都不是什麼好點子設計

  • 擴展類型的元素是基本類型實例,基本類型的實例卻不是擴展類型的元素,很混亂
  • 目前尚未很好的方法來枚舉基本類型的全部元素,及其擴展
  • 可伸縮性會致使設計和實現變得複雜起來

二、可伸縮枚舉類型舉例,至少有一種具備說服力的例子(操做碼,30條)blog

  • 讓API的用戶提供本身的操做,有效擴展API 提供的操做集

  • 客戶端可面向接口調用

  • <T extend Enum<T> & Operation>  加強枚舉
  • <T extends Enum<T> & OperationInter> 這個複雜的泛型不只保證Class既是枚舉類型並且也是OperationInter的子類
  • 或者使用有限制的通配符類型,以下

  • 這樣更加靈活,容許調用者將多個實現類型的操做合併在一塊兒
  • 除非須要靈活實現多個實現類型,最好使用有限制的通配符類型

三、用接口實現可伸縮枚舉有個小小的不足繼承

  • 沒法實現從一個枚舉類型繼承到另外一個枚舉類型
  • 能夠將其封裝在一個輔助類或者靜態輔助方法中,避免代碼的複製工做

四、總結接口

  • 雖然沒法編寫可擴展枚舉類型,卻能夠經過編寫接口以及實現該接口的基礎枚舉類型進行模擬
相關文章
相關標籤/搜索