美文网首页
java代码优化

java代码优化

作者: 灿烂的GL | 来源:发表于2019-12-12 18:51 被阅读0次

    1、lombok的@Builder模式

    适用场景:构建对象有两种方法,一是构造器,二是默认无参构造器创建对象后使用 set 方法一个个赋值。如果变量很多,或者说构建对象时需要传入的参数很多,我们就需要用到 builder 构建对象,这里通过lombok插件的注解实现。
    实例
    1)pom依赖

    <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>0.10.2</version>
       </dependency>
    

    2)构建实体

    @Data
    @Builder
    public class AuthRiskRes {
        private List<String> date;
        private List<Integer> risk;
        private Integer totalRisk;
    }
    

    3)调用

    AuthRiskRes.builder().date(dates).totalRisk(0).risk(Collections.EMPTY_LIST).build();
    

    4)输出格式参考

    "date": [‘9月1日’,’9月2日’,’9月3日’,’9月4日’,’9月5日’,’9月6日’,’9月7日’],
                    "risk": [1,2,3,4,5,6,7]
    ,”totalRisk”:28
    

    2、Java 8 stream方法

    1)适用场景:Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,和迭代器又不同的是,Stream 可以并行化操作,这是JDK8后有的特性,可以通过参考1简单了解其特性。
    对于流的详细原理和更全的应用可参考2
    参考链接:
    1、jdk8的特性stream().map()
    2、JDK1.8-Stream()使用详解


    3、Java 8 Optional 类

    适用场景:需要判空情况(避免出现空指针情况),简化代码
    1)实例参考链接2

    一段冗余代码:
    public static String getChampionName(Competition comp) throws IllegalArgumentException {
        if (comp != null) {
            CompResult result = comp.getResult();
            if (result != null) {
                User champion = result.getChampion();
                if (champion != null) {
                    return champion.getName();
                }
            }
        }
        throw new IllegalArgumentException("The value of param comp isn't available.");
    }
    
    Optional加持过后
    public static String getChampionName(Competition comp) throws IllegalArgumentException {
        return Optional.ofNullable(comp)
                .map(c->c.getResult())
                .map(r->r.getChampion())
                .map(u->u.getName())
                .orElseThrow(()->new IllegalArgumentException("The value of param comp isn't available."));
    }
    

    参考链接
    1、理解、学习与使用 JAVA 中的 OPTIONAL
    2、Optional 作用与实例


    4、工厂模式

    适用场景:采用工厂模式主要的原因是为了解耦合,相当于把用户(不同需求)和工厂(公共方法)分割开。
    1)实例

    //抽象产品角色---工厂
    public interface Product{
      void product();
    }
    
    //具体需求1
    public class Pro1 implements Product{
      @Override
      public void product() {
        System.out.println("需求1");
      }
    }
    //具体需求2
    public class Pro2 implements Product{
      @Override
      public void product() {
        System.out.println("需求2");
      }
    }
    

    调用

    public class Factory { 
        public static Product buy(type) { 
          switch (type) { 
          case 1: 
            return new Pro1(); 
          case 2: 
            return new Pro2(); 
          default: 
            break; 
          } 
          return null; 
        } 
      } 
    

    其他工厂模式实现思想类似

    相关文章

      网友评论

          本文标题:java代码优化

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