美文网首页
java工具类规范

java工具类规范

作者: googoler | 来源:发表于2020-06-22 10:33 被阅读0次
  1. 工具类定义为final class,考虑到工具类应该不能被继承
  2. 工具类的命名应该用Util结尾,例如LogUtil
  3. 工具类的构造方法应该首选是private的,同时工具类的工具方法为static
  4. 工具类使用单例模式,或者static初始化某个单例。这个规范是因工具的不同而不同的,例如我要写一个gson的工具类,不应该在每个方法里都new Gson()再进行操作,如果一个类大量调用GsonUtil,那就会大量创建gson对象。
    //静态块初始化方式:
    public final class GsonUtil {
        private static Gson gson = null;
        static {
            if (gson == null) {
                gson = new Gson();
            }
        }
        private GsonUtil() {
        }
    }
    
  //单例模式初始化方式:
  public final class GsonUtil{
  private static volatile Gson gson;
  private static Gson initInstance(){
      if(gson == null){
          synchronized(GsonUtil){
              if(gson == null){
                  gson = new Gson();     
              }
          }
      }
  }
  private GsonUtil() {
      initInstance();
  }
}

编写工具类俩种方式:

  • 静态类式:

    1. 工具方法设计为static方法
    2. 工具 类所有构造方法都设计为private修饰
    3. 工具类本身以abstract修饰(目的就是只能用类调用方法,不能实例化)
  • 单例模式:

    1. 工具方法都设为非static方法
    2. 将工具类设计为单列模式
    3. 注意这种方式需要获取工具类对象(实例化)才能调用方法
  • 静态类优势:

    • 静态类不用引用就能调用,而单例需要有对象的引用,因此节约资源(我觉得这个影响微乎其微,可以忽略)
    • 静态类方便,随处可用;而单例必须有引用,需要注入或者new(是有点麻烦,我上次写静态类也是因为这个原因)
  • 单件类优势:

    • 单例模式的类是普通的类,它具有面向对象的特性,方便扩展
    • 对于有配置的工具类,可以轻松的创建多个不同配置的单例对象(想起我主导的另一个项目就存在5-6个redis数据源,如果使用静态类就是灾难)
  • 结论:

    • 如果没有配置信息的工具类,当然是静态类好,随处调用,不需引用爽得不要不要的。比如Math.abs(),如果写个单例,可能全世界都要笑话你了。
    • 如果有配置信息的工具类,最好还是使用单例模式吧,这样以后如果有多个数据源,你会感谢你自己。
  • 区别
    我在静态方法里使用的单例模式,不是指的是我的工具类作为单例,而是第三方的类。


参考:
java工具类编写思考

相关文章

网友评论

      本文标题:java工具类规范

      本文链接:https://www.haomeiwen.com/subject/gcfxfktx.html