做户型图的网站,牛视频网站建设,充值网站架设,阿里云网站建设方案介绍
建造者模式#xff08;Builder#xff09;核心目的是通过使用多个简单对象一步步构建出一个复杂对象。通过将复杂对象的构造过程拆分为多个简单的步骤#xff0c;使得创建对象更加灵活#xff0c;可读性和可维护性更强。 使用场景
创建一个由多个部分组成的复杂对象…介绍
建造者模式Builder核心目的是通过使用多个简单对象一步步构建出一个复杂对象。通过将复杂对象的构造过程拆分为多个简单的步骤使得创建对象更加灵活可读性和可维护性更强。 使用场景
创建一个由多个部分组成的复杂对象需要遵循特定顺序创建对象相同的构建过程可以创建不同的对象表现类似构造器重载不影响代码原来的功能情况下方便扩展新的组成部分 建造者模式组成部分
产品Product表示最终要构建的复杂对象建造者Builder定义用于构建产品的接口包含创建产品各个部分的方法具体建造者Concrete Builder实现Builder接口完成产品各个部分的具体构建工作。指挥者Director负责调用合适的建造者方法按照特定顺序组装产品。 代码案例
在这个示例代码中我们有一个Pizza类它有4个属性面团、酱料、奶酪和配料。我们使用内部类Builder来构建Pizza实例。
public class Pizza {private String dough;private String sauce;private String cheese;private ListString toppings;private Pizza(Builder builder) {this.dough builder.dough;this.sauce builder.sauce;this.cheese builder.cheese;this.toppings builder.toppings;}public static class Builder {private String dough;private String sauce;private String cheese;private ListString toppings new ArrayListString();public Builder(String dough, String sauce) {this.dough dough;this.sauce sauce;}public Builder cheese(String cheese) {this.cheese cheese;return this;}public Builder toppings(String... toppings) {this.toppings.addAll(Arrays.asList(toppings));return this;}public Pizza build() {return new Pizza(this);}}Overridepublic String toString() {return Pizza{ dough dough \ , sauce sauce \ , cheese cheese \ , toppings toppings };}
}
在Builder类中我们有一个构造函数它接受面团和酱料作为参数。我们还有两个方法cheese和toppings用于设置cheese和toppings属性。
最后我们有一个build方法它返回一个新的Pizza实例。
使用建造者模式我们可以这样构建一个Pizza实例
Pizza pizza new Pizza.Builder(Thin Crust, Tomato Sauce).cheese(Mozzarella).toppings(Pepperoni, Mushrooms, Onions).build();System.out.println(pizza);控制台输出
Pizza{doughThin Crust, sauceTomato Sauce, cheeseMozzarella, toppings[Pepperoni, Mushrooms, Onions]}小结
Builder模式是为了创建一个复杂的对象需要多个步骤完成创建或者需要多个零件组装的场景且创建过程中可以灵活调用不同的步骤或组件。