在封装接口时,常常遇到参数很多,不利于维护改造,找到优雅的写法。
import java.lang.reflect.Field;
/**
* @Author: mztt
* @Description: sing jump rap bascketball
* @Date: Created in 16:38 2020/2/18
* @Modified By:mztt
*/
public class NutritionFacts {
private final int servingSize ;
private final int servings ;
private final int calories ;
private final int fat;
private final int sodium ;
private final int carbohydrate ;
public static class Builder{
private final int servingSize ;
private final int servings ;
private int calories = 0;
private int fat = 0;
private int sodium = 0;
private int carbohydrate = 0;
public Builder( int servingSize, int servings){
this.servingSize = servingSize;
this.servings = servings;
}
public Builder calories(int val){
calories = val;
return this;
}
public Builder fat(int val){
fat = val;
return this;
}
public Builder soduim(int val ){
sodium = val;
return this;
}
public Builder carbohydrate(int val){
carbohydrate = val;
return this;
}
public NutritionFacts build(){
return new NutritionFacts(this);
}
}
private NutritionFacts( Builder builder){
servingSize = builder.servingSize;
servings = builder.servings;
calories = builder.calories;
fat = builder.fat;
sodium = builder.sodium;
carbohydrate = builder.carbohydrate;
}
public static void main(String[] args) {
//构造器
NutritionFacts cocaCola = new Builder(240,8).calories(100).carbohydrate(20).soduim(50).build();
//反射输出属性
Class aClass = cocaCola.getClass();
Field [] fields = aClass.getDeclaredFields();
for (Field field: fields) {
field.setAccessible(true);
try {
System.out.println(field.getName() + "---" + field.get(cocaCola));
}catch (IllegalAccessException e){
e.printStackTrace();
}
}
}
}