zoukankan      html  css  js  c++  java
  • Effective Java Item2:Consider a builder when faced with many constructor parameters

    Item2:Consider a builder when faced with many constructor parameters

    当构造方法有多个参数时,可以考虑使用builder方式进行处理。

    实例代码:

    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 sodium(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 class Test {
        public static void main(String[] args) {
            NutritionFacts nf = new NutritionFacts.Builder(200, 80)
                    .calories(100).sodium(35).carbohydrate(20).build();
        }
    }
  • 相关阅读:
    hadoop2 作业执行过程之作业提交
    Hadoop各个服务端口列表
    基于 Nginx 和 FFmpeg 搭建流媒体服务器
    prometheus
    ubuntu 下dbus的环境搭建和使用
    Hadoop-Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster —
    Exception message: /bin/bash: line 0: fg: no job control
    P3942 将军令 [贪心]
    P3941 入阵曲
    P3941 入阵曲
  • 原文地址:https://www.cnblogs.com/yshyee/p/4299242.html
Copyright © 2011-2022 走看看