• 对typesafe enum模式的改进


    按照一些资料上讲,其实enum也就是在编译器层面实现用类来包装枚举(typesafe enum 模式)的思想。以保证类型安全。
    自己用类来写枚举其实效果也还是不错的,只是代码略显啰嗦。
    例子代码
     1 public class EnumClass1 extends EnumClass {
     2 private EnumClass1(String id,String key){
     3 super(id,key);
     4 }
     5 
     6  
     7 
     8 public static final EnumClass1 ENUM_1_1=new EnumClass1 ("1","1");
     9 public static final EnumClass1 ENUM_1_2=new EnumClass1 ("2","2");
    10 public static final EnumClass1 ENUM_1_3=new EnumClass1 ("3","3");
    11 //
    12 public static final EnumClass1 ENUM_1_4=new EnumClass1 ("4","4");
    13  
    14  
    15 }

    故想了一些办法来简化代码。

    a.声明了一个静态方法超短名称用于创建枚举常量
    b.常量变为一行语句赋值,可减少 public static final +类名 +new

    问题:一行语句赋值是否不太符合编码惯例。 我觉得类型安全枚举,算是特例吧。它的成员都是一个类型 

    代码量就接近于直接用enum了

    enum的其他优势: switch语句,这方面用类就无能为力了 无法完全替代enum的功能。

    public class EnumClass1 extends EnumClass {
    private EnumClass1(String id,String key){
    super(id,key);
    }
    public static EnumClass1 o(String id, String key){
    return new EnumClass1(id, key);
    }
     
    public static final EnumClass1 
    ENUM_1_1=o("1","1"),
    ENUM_1_2=o("2","2"),
    ENUM_1_3=o("3","3"),
    //
    ENUM_1_4=o("4","4");
     
     
    }
    实际效果测试:

    现有一个用此方法做的枚举类,有5个枚举常量 。
    原大小为2.5K 修改后大小为2.3K貌似效果不大 ?

    换另外一个枚举类型  。
    共有19个枚举常量,修改前大小 3.4K,修改后大小 2.55K 。
    大概少了1/4的代码。
    好吧 已经算不错了。
  • 相关阅读:

    IT人的素质 & 设计杂谈
    结构化思维思维的结构
    [WM].NET CF下如何提高应用程序的性能 【转载】
    无题
    [WM]谁抢走了应用程序的性能? 【转载】
    繁体编码文本文件转换为简体编码的工具
    生成VB多行字符串常量的工具
    跟我一步一步开发自己的Openfire插件
    cnblogs博文浏览[推荐、Top、评论、关注、收藏]利器代码片段
  • 原文地址:https://www.cnblogs.com/laoniu85/p/4000257.html
Copyright © 2020-2023  润新知