(图来自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); } }
原文:https://www.cnblogs.com/camcay/p/12376892.html