用接口模拟可伸缩枚举(34)

一、枚举的可伸缩性最后证实都不是什么好点子设计

  • 扩展类型的元素是基本类型实例,基本类型的实例却不是扩展类型的元素,很混乱
  • 目前尚未很好的方法来枚举基本类型的全部元素,及其扩展
  • 可伸缩性会致使设计和实现变得复杂起来

二、可伸缩枚举类型举例,至少有一种具备说服力的例子(操做码,30条)blog

  • 让API的用户提供本身的操做,有效扩展API 提供的操做集

  • 客户端可面向接口调用

  • <T extend Enum<T> & Operation>  加强枚举
  • <T extends Enum<T> & OperationInter> 这个复杂的泛型不只保证Class既是枚举类型并且也是OperationInter的子类
  • 或者使用有限制的通配符类型,以下

  • 这样更加灵活,容许调用者将多个实现类型的操做合并在一块儿
  • 除非须要灵活实现多个实现类型,最好使用有限制的通配符类型

三、用接口实现可伸缩枚举有个小小的不足继承

  • 没法实现从一个枚举类型继承到另外一个枚举类型
  • 能够将其封装在一个辅助类或者静态辅助方法中,避免代码的复制工做

四、总结接口

  • 虽然没法编写可扩展枚举类型,却能够经过编写接口以及实现该接口的基础枚举类型进行模拟
相关文章
相关标签/搜索