/**
- 通用的 Builder 模式构建器
- @author: CipherCui
- @since 2019/8/29
在这里插入代码片
/
public class Builder {
private final Supplier instantiator;
private List<Consumer> modifiers = new ArrayList<>();
public Builder(Supplier instantiator) {
this.instantiator = instantiator;
}
public static Builder of(Supplier instantiator) {
return new Builder<>(instantiator);
}
public Builder with(Consumer1<T, P1> consumer, P1 p1) {
Consumer c = instance -> consumer.accept(instance, p1);
modifiers.add©;
return this;
}
public <P1, P2> Builder with(Consumer2<T, P1, P2> consumer, P1 p1, P2 p2) {
Consumer c = instance -> consumer.accept(instance, p1, p2);
modifiers.add©;
return this;
}
public <P1, P2, P3> Builder with(Consumer3<T, P1, P2, P3> consumer, P1 p1, P2 p2, P3 p3) {
Consumer c = instance -> consumer.accept(instance, p1, p2, p3);
modifiers.add©;
return this;
}
public T build() {
T value = instantiator.get();
modifiers.forEach(modifier -> modifier.accept(value));
modifiers.clear();
return value;
}
/*- 1 参数 Consumer
/
@FunctionalInterface
public interface Consumer1<T, P1> {
void accept(T t, P1 p1);
}
/* - 2 参数 Consumer
/
@FunctionalInterface
public interface Consumer2<T, P1, P2> {
void accept(T t, P1 p1, P2 p2);
}
/* - 3 参数 Consumer
*/
@FunctionalInterface
public interface Consumer3<T, P1, P2, P3> {
void accept(T t, P1 p1, P2 p2, P3 p3);
}
}
- 1 参数 Consumer
文章转载自: http://www.ciphermagic.cn/java8-builder.html
java8创建对象