• eff多可选构造参数可考虑构建器


     1 package eff;
     2 
     3 /**
     4  * 如果类的构造器或者静态工厂中具有多个参数,设计这种类时,
     5  * Builder模式就是不错的选择,特别是大多数参数都是课选的时候。
     6  * 相对于javaBean较为安全,适用于多个可选参数的对象创建。
     7  * 
     8  * @author lw
     9  * 
    10  */
    11 public class NutritionFacts {
    12     // required
    13     private final int servingSize;
    14     private final int servings;
    15     // optional
    16     private final int calories;
    17     private final int fat;
    18     private final int sodium;
    19     private final int carbohydrate;
    20 
    21     /** 构建器 */
    22     public static class Builder implements IBuilder<NutritionFacts> {
    23         private final int servingSize;
    24         private final int servings;
    25         private int calories;
    26         private int fat;
    27         private int sodium;
    28         private int carbohydrate;
    29 
    30 
    31         public Builder(int servingSize, int servings) {
    32             this.servingSize = servingSize;
    33             this.servings = servings;
    34         }
    35 
    36         public Builder calories(int val) {
    37             calories = val;
    38             return this;
    39         }
    40 
    41         public Builder fat(int val) {
    42             fat = val;
    43             return this;
    44         }
    45 
    46         public Builder sodium(int val) {
    47             sodium = val;
    48             return this;
    49         }
    50 
    51         public Builder carbohydrate(int val) {
    52             carbohydrate = val;
    53             return this;
    54         }
    55 
    56         public NutritionFacts build() {
    57             return new NutritionFacts(this);
    58         }
    59     }
    60 
    61     public NutritionFacts(Builder builder) {
    62         servingSize = builder.servingSize;
    63         servings = builder.servings;
    64         calories = builder.calories;
    65         fat = builder.fat;
    66         sodium = builder.sodium;
    67         carbohydrate = builder.carbohydrate;
    68     }
    69 
    70     public int getServingSize() {
    71         return servingSize;
    72     }
    73 
    74     public int getServings() {
    75         return servings;
    76     }
    77 
    78     public int getCalories() {
    79         return calories;
    80     }
    81 
    82     public int getFat() {
    83         return fat;
    84     }
    85 
    86     public int getSodium() {
    87         return sodium;
    88     }
    89 
    90     public int getCarbohydrate() {
    91         return carbohydrate;
    92     }
    93 
    94 }
     
  • 相关阅读:
    idea常用快捷键
    Spring中<bean>标签之使用p标签配置bean的属性
    Mysql语句转义
    Idea使用(摘抄至java后端技术公众号-孤独烟)
    js中scroll滚动相关
    Flask-wtforms类似django中的form组件
    Flask中的数据连接池
    SQLAlchemy
    博客园美化阅读模式
    [NOIP2003] 提高组 洛谷P1039 侦探推理
  • 原文地址:https://www.cnblogs.com/lw900320/p/2587867.html
Copyright © 2020-2023  润新知