Java 8 consumer风格Builder

2021-05-01 07:28

阅读:371

标签:icon   lis   object   etag   bic   clear   ant   return   function   

 1 public static class GenericBuilder {
 2         private final Supplier instantiate;
 3 
 4         private final List> consumers = new ArrayList();
 5 
 6         public GenericBuilder(Supplier instantiate) {
 7             this.instantiate = instantiate;
 8         }
 9 
10         public static  GenericBuilder of(Supplier instantiator)  {
11             return new GenericBuilder(instantiator);
12         }
13 
14         public  GenericBuilder with(BiConsumer biConsumer, U value) {
15             Consumer setOperationFunction = instance -> biConsumer.accept(instance, value);
16             consumers.add(setOperationFunction);
17             return this;
18         }
19 
20         public T build() {
21             T instance = instantiate.get();
22 
23             // loop call each set function with object instance!
24             consumers.forEach(consumer -> consumer.accept(instance));
25             consumers.clear();
26 
27             return instance;
28         }
29     }

 

使用:

 

 1 public class Dummy {
 2         private String name;
 3         private Integer age;
 4         private Boolean foreigner;
 5 
 6         public String getName() {
 7             return name;
 8         }
 9 
10         public void setName(String name) {
11             this.name = name;
12         }
13 
14         public Integer getAge() {
15             return age;
16         }
17 
18         public void setAge(Integer age) {
19             this.age = age;
20         }
21 
22         public Boolean getForeigner() {
23             return foreigner;
24         }
25 
26         public void setForeigner(Boolean foreigner) {
27             this.foreigner = foreigner;
28         }
29 
30 
31     }

 

Dummy build = GenericBuilder.of(Dummy::new).with(Dummy::setAge, 12)
                .with(Dummy::setName, "Vodoo")
                .with(Dummy::setForeigner, false).build();

 

Java 8 consumer风格Builder

标签:icon   lis   object   etag   bic   clear   ant   return   function   

原文地址:https://www.cnblogs.com/Joynic/p/13220858.html


评论


亲,登录后才可以留言!