Builder模式

来源:互联网 发布:js实现图片放大缩小 编辑:程序博客网 时间:2024/06/03 03:18

目的是为了解决使用构造器方法时排列组合爆炸及使用时的繁琐性,及调用JavaBean实现方法时的线程安全性问题。

public class NutritionFacts{    private int servingSize ;     private int servings ;    private int categories ;    private int fat;    private int sodium;    private int carbohydrate;    public static class Builder{        //required no default value        private final int servingSize;        private final int servings;        //optional parameters  initial default values        private int categories = 0;//default value        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 categories(int val) {            this.categories = val;        }        public Builder fat(int val){            this.fat = val;        }        public Builder sodium(int val){            this.sodium = val;        }        public Builder carbohydrate(int val){            this.carbohydrate = val;        }                   //builder        public NutritionFacts build() {            return new NutritionFacts(this);        }    }               private  NutritionFacts(Builder builder){        servingSize = builder.servingSize;        servings = builder.servings;        categories = builder.categories;        fat = builder.fat;        sodium = builder.sodium;        carbohydrate = builder.carbohydrate;    }}    

调用方式

NutritionFacts cocaCola = new NutritionFacts.Builder(240,8).categories(100).sodium(35).carbohydrate(27).build();

使用了Builder静态内部类,实现调用。并且使用一行代码调用的方式保证线程的安全性。

0 0