/** * If you have multiple parameters in a class constructor or static factory, the builder mode is a good choice when designing this class, especially if most of the parameters are optional. * Client code using the Builder mode is easier to read and write than using the traditional overlay constructor pattern, and the builder is more secure than JavaBeans. * * @author Liu Xiangfeng * * * * Public class nutritionfacts { //All the parameters Private Final intServingsize;Private Final intservings;Private Final intcalories;Private Final intFatPrivate Final intSodiumPrivate Final intCarbohydrate; Public Static class Builder { //Required parameters, final guarantees that it must be assigned a value Private Final intServingsize;Private Final intservings;//Options available Private intCalories =0;Private intFat =0;Private intSodium =0;Private intCarbohydrate =0;/** * Complete initialization of the required parameters in the constructor * * @param servingsize * @param servings */ Public Builder(intServingsize,intServings) { This. servingsize = servingsize; This. servings = servings; }/** * * @param val * Assign a value to an option * @return Builder object for chain adjustment Use the Assignment function * / PublicBuildercalories(intval) {calories = Val;return This; } PublicBuilderFat(intval) {fat = val;return This; } PublicBuilderSodium(intval) {sodium = Val;return This; } PublicBuilderCarbohydrate(intval) {carbohydrate = Val;return This; }/** * Create a Get object method and pass yourself (Builder) as a parameter * * @return nutritionfacts Object */ PublicNutritionfactsBuild() {return NewNutritionfacts ( This); } }/** * Privatisation constructor, guaranteed to operate on the same object * * @param Builder incoming constructor to assign value */ Private nutritionfacts(Builder builder) {servingsize = builder.servingsize; servings = builder.servings; calories = builder.calories; Fat = Builder.fat; Sodium = Builder.sodium; Carbohydrate = builder.carbohydrate; }/** * Test method * * @param args */ Public Static void Main(string[] args) {Nutritionfacts CocaCola =NewNutritionfacts.builder ( -,8). Calories ( -). Sodium ( *). Carbohydrate ( -). build (); }}
Consider builder--effective Java reading notes when encountering multiple constructor parameters