最近在研读《effective java》这本书,做一个简单的笔记。
构造器和静态工厂有一个共同的局限性,都不能很好的扩展大量的可选参数,考虑到很多可选参数的构造,我们引入一个新的设计模式。即构造器模式。
package EffectiveJava;
/**
* @author 韦海涛
* @version 1.0
* @date 3/30/2021 11:23 PM
*/
//Builder Pattern
public class No2Builder {
private final int servingSize;
private final int serving;
private final int calories;
private final int fat;
private final int sodium;
private final int carbohydrate;
private static class Builder {
private final int servingSize;
private final int serving;
private int calories = 0;
private int fat = 0;
private int sodium = 0;
private int carbohydrate = 0;
public Builder(int servingSize, int serving) {
this.servingSize = servingSize;
this.serving = serving;
}
public Builder calories(int val){
calories = val;
return this;
}
public Builder fat(int val){
fat = val;
return this;
}
public Builder sodium(int val){
sodium = val;
return this;
}
public Builder carbohydrate(int val){
carbohydrate = val;
return this;
}
public No2Builder builder(){
return new No2Builder(this);
}
}
private No2Builder(Builder builder){
servingSize = builder.servingSize;
serving = builder.serving;
calories = builder.calories;
fat = builder.fat;
sodium = builder.sodium;
carbohydrate = builder.carbohydrate;
}
public int getCalories() {
return calories;
}
public static void main(String[] args) {
No2Builder no2Builder = new Builder(240,9).calories(100).fat(10).sodium(1).builder();
System.out.println(no2Builder.getCalories());
}
}
这篇博客探讨了在Java中如何通过Builder模式解决构造器和静态工厂方法在处理多个可选参数时的局限性。作者展示了如何创建一个`No2Builder`类,并利用Builder模式来构建对象,允许更灵活的参数配置。在示例中,`No2Builder`的实例可以通过链式调用来设置不同的属性值,提高了代码的可读性和可维护性。
182

被折叠的 条评论
为什么被折叠?



