美文网首页
1.2 遇到多个构造器,多个不同的参数时,需要考虑使用构建器

1.2 遇到多个构造器,多个不同的参数时,需要考虑使用构建器

作者: flyjar | 来源:发表于2020-12-07 11:20 被阅读0次

    1.2遇到多个构造器,多个不同的参数时,需要考虑使用构建器

    1.2.2

    构造器和静态工厂都一个通病,就是不能很好的扩展可选参数。程序员一般采用重叠构造器模式。重叠构造器模式可行,但是当有许多参数的时候,代码会很难编写,很混乱,很容易造成一个细小的参数问题,导致一些微妙的问题。且很难定位到问题

    重叠构造器模式,请见以下代码

     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 NutritionFacts(int servingSize, int servings) {
                    this(servingSize, servings, 0);
                }
    
                public NutritionFacts(int servingSize, int servings,
                                      int calories) {
                    this(servingSize, servings, calories, 0);
                }
    
                public NutritionFacts(int servingSize, int servings,
                                      int calories, int fat) {
                    this(servingSize, servings, calories, fat, 0);
                }
    
                public NutritionFacts(int servingSize, int servings,
                                      int calories, int fat, int sodium) {
                    this(servingSize, servings, calories, fat, sodium, 0);
                }
    
                public NutritionFacts(int servingSize, int servings,
                                      int calories, int fat, int sodium, int carbohydrate) {
                    this.servingSize = servingSize;
                    this.servings=servings;
                    this.calories=calories;
                    this.fat=fat;
                    this.sodium=sodium;
                    this.carbohydrate = carbohydrate;
                }
    
    }  
    

    //关于建造者模式具体解释,以后再进行解释

    相关文章

      网友评论

          本文标题:1.2 遇到多个构造器,多个不同的参数时,需要考虑使用构建器

          本文链接:https://www.haomeiwen.com/subject/pntuwktx.html