如果類的構(gòu)造器或者靜態(tài)工廠中具有多個(gè)參數(shù),設(shè)計(jì)這種類時(shí),Builder模式就是種不錯(cuò)的選擇,特別是當(dāng)大多數(shù)參數(shù)都是可選的時(shí)候。Builder也有它的不足之處,為了創(chuàng)建對(duì)象必須先創(chuàng)建它的構(gòu)造器,在某些十分注重性能的情況下,可能會(huì)有增大開銷的問題。
/**
* 構(gòu)造器模式,應(yīng)對(duì)可變參數(shù)
* Created by luoluo on 2017/12/19.
*/
public class Coffee {
private String coffeeBean;
private String water;
private String suger;
private String milk;
private String fruit;
private String cream;
public static class Bulider {
private String coffeeBean;
private String water;
private String suger;
private String milk;
private String fruit;
private String cream;
public Bulider(String coffeeBean, String water) {
this.coffeeBean = coffeeBean;
this.water = water;
}
public Bulider suger(String suger) {
this.suger = suger;
return this;
}
public Bulider milk(String milk) {
this.milk = milk;
return this;
}
public Bulider fruit(String milk) {
this.fruit = fruit;
return this;
}
public Bulider cream(String cream) {
this.cream = cream;
return this;
}
public Coffee build() {
return new Coffee(this);
}
}
private Coffee(Bulider build) {
this.coffeeBean = build.coffeeBean;
this.water = build.water;
this.suger = build.suger;
this.milk = build.milk;
this.fruit = build.fruit;
this.cream = build.cream;
}
}
public class CoffeeBuilerDemo {
public static void main(String[] args) {
Coffee coffee = new Coffee.Bulider("咖啡豆", "水").milk("牛奶")
.cream("奶油").suger("糖").build();
}
}