zoukankan      html  css  js  c++  java
  • 设计模式-builder(构造器模式)

    好处:

    多个属性时,可以清楚明了知道属性,

    重叠构造起器的安全性和JavaBeans模式的可读性

    只需要制定需要建造的类型就可以得到他们

    实例;

    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 {
            // Required parameters
            private final int servingSize;
            private final int servings;
    
            // Optional parameters - initialized to default values
            private int calories = 0;
            private int fat = 0;
            private int carbohydrate = 0;
            private int sodium = 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 carbohydrate(int val) {
                carbohydrate = val;
                return this;
            }
    
            public Builder sodium(int val) {
                sodium = 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 static void main(String[] args) {
        NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8)
                    .calories(100).sodium(35).carbohydrate(27).build();
    }

    当然,Builder也有缺点。

    1. 创建实例前都要创建一个Builder实例。
    2. Builder模式编写起来较为冗长。
  • 相关阅读:
    eclipse最有用快捷键整理(转)
    Spring IOC的配置使用(转)
    char varchar varchar2 的区别 (转)
    BigDecimal用法详解(转)
    20160126--springaop
    20160125--Spring
    20150122--接口
    Servlet与JSP的区别
    练习
    151127
  • 原文地址:https://www.cnblogs.com/Pjson/p/10412419.html
Copyright © 2011-2022 走看看