建造者模式
封装一个产品的构造过程,并允许按步骤构造
类图

(图来自wiki)
示例
public class Product { private String name; private String descripe; public void setDescripe(String descripe) { this.descripe = descripe; } public void setName(String name) { this.name = name; } @Override public String toString() { return "["+name+":"+descripe+"]"; } } public interface Builder { void buildName(); void buildDescripe(); Product getProduct(); } public class ConcreteBuilderA implements Builder{ Product product; public ConcreteBuilderA(){ product = new Product(); } @Override public void buildName() { product.setName("ProductA"); } @Override public void buildDescripe() { product.setDescripe("this is ProductA"); } @Override public Product getProduct() { return product; } } public class ConcreteBuilderB implements Builder { Product product; public ConcreteBuilderB() { product = new Product(); } @Override public void buildName() { product.setName("ProductB"); } @Override public void buildDescripe() { product.setDescripe("this is ProductB"); } @Override public Product getProduct() { return product; } } public class Director { Builder builder; public Director(Builder builder){ this.builder = builder; } void construct(){ builder.buildDescripe(); builder.buildName(); } public Product getProduct(){ return builder.getProduct(); } } //测试 public class Client { public static void main(String[] args){ Director directorA = new Director(new ConcreteBuilderA()); directorA.construct(); Product productA = directorA.getProduct(); System.out.println(productA); Director directorB = new Director(new ConcreteBuilderB()); directorB.construct(); Product productB = directorB.getProduct(); System.out.println(productB); } }
运行结果

建造者模式和工厂模式
- 建造者模式允许对象通过多个步骤来创建,并且可以改变过程,工厂模式只有一个步骤。
语言是思想的载体

浙公网安备 33010602011771号