zoukankan      html  css  js  c++  java
  • 【Effective Java】2、构造参数过多的时候

    package cn.xf.cp.ch02.item2;
    
    /**
     * 
     * 功能:当我们的构造参数有很多,超出可控范围的时候,用build模式 时间:下午8:25:05 文件:NutritionFacts.java
     * 
     * @author Administrator
     *
     */
    public class NutritionFacts
    {
        private final int    param1;
        private final int    param2;
        private final int    param3;
        private final int    param4;
        private final int    param5;
        private final int    param6;
        private final int    param7;
    
        public static void main(String[] args)
        {
            // 初始化NutritionFacts
            NutritionFacts test = new NutritionFacts.Builder(1, 2).param3(3).param4(4).param5(5).param6(6).param7(7)
                    .build();
        }
    
        private NutritionFacts(Builder build)
        {
            param1 = build.param1;
            param2 = build.param2;
            param3 = build.param3;
            param4 = build.param4;
            param5 = build.param5;
            param6 = build.param6;
            param7 = build.param7;
        }
    
        public static class Builder
        {
            private final int    param1;
            private final int    param2;
            private int            param3    = 0;
            private int            param4    = 0;
            private int            param5    = 0;
            private int            param6    = 0;
            private int            param7    = 0;
    
            public Builder(int param1, int param2)
            {
                this.param1 = param1;
                this.param2 = param2;
            }
    
            public Builder param3(int val)
            {
                param3 = val;
                return this;
            }
    
            public Builder param4(int val)
            {
                param3 = val;
                return this;
            }
    
            public Builder param5(int val)
            {
                param3 = val;
                return this;
            }
    
            public Builder param6(int val)
            {
                param3 = val;
                return this;
            }
    
            public Builder param7(int val)
            {
                param3 = val;
                return this;
            }
    
            public NutritionFacts build()
            {
                return new NutritionFacts(this);
            }
        }
    }
  • 相关阅读:
    k8s之创建etcd集群
    完美解决微信video视频隐藏控件和内联播放问题
    JS工具库封装:Video转换成Canvas
    H5 video 标签 播放事件
    iSlider 如丝般高性能H5全屏滑动组件
    设计模式之 适配器模式
    c++ STL常用算法使用方法
    快速排序与二分查找
    CLOSE_WAIT TIME_WAIT
    erlang erl文件编译的三种脚本
  • 原文地址:https://www.cnblogs.com/cutter-point/p/5840167.html
Copyright © 2011-2022 走看看