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;
}
}
其他工厂模式实现思想类似
网友评论