// 抽象建造类public abstract class PersonBuilder { public abstract void BuildHead(); public abstract void BuildBody(); public abstract void BuildArmLeft(); public abstract void BuildArmRight(); public abstract void BuildLegLeft(); public abstract void BuildLegRight();}// 具体建造者public class PersonFatBuilder extends PersonBuilder{ @Override public void BuildHead() { System.out.println("胖头"); } @Override public void BuildBody() { System.out.println("胖身体"); } @Override public void BuildArmLeft() { System.out.println("胖左手"); } @Override public void BuildArmRight() { System.out.println("胖右手"); } @Override public void BuildLegLeft() { System.out.println("胖左腿"); } @Override public void BuildLegRight() { System.out.println("胖右腿"); }}public class PersonThinBuilder extends PersonBuilder{ @Override public void BuildHead() { System.out.println("瘦头"); } @Override public void BuildBody() { System.out.println("瘦身体"); } @Override public void BuildArmLeft() { System.out.println("瘦左手"); } @Override public void BuildArmRight() { System.out.println("瘦右手"); } @Override public void BuildLegLeft() { System.out.println("瘦左腿"); } @Override public void BuildLegRight() { System.out.println("瘦右腿"); }}public class Test { // 客户端不需要知道具体的建造顺序 public static void main(String[] args) { // 瘦子 PersonBuilder personBuilder = new PersonThinBuilder(); PersonDirector personDirector =new PersonDirector(personBuilder); personDirector.createPerson(); // 胖子 PersonFatBuilder personFatBuilder = new PersonFatBuilder(); PersonDirector personDirector2 = new PersonDirector(personFatBuilder); personDirector2.createPerson(); }}