1. // 抽象建造类
    2. public abstract class PersonBuilder {
    3. public abstract void BuildHead();
    4. public abstract void BuildBody();
    5. public abstract void BuildArmLeft();
    6. public abstract void BuildArmRight();
    7. public abstract void BuildLegLeft();
    8. public abstract void BuildLegRight();
    9. }
    10. // 具体建造者
    11. public class PersonFatBuilder extends PersonBuilder{
    12. @Override
    13. public void BuildHead() {
    14. System.out.println("胖头");
    15. }
    16. @Override
    17. public void BuildBody() {
    18. System.out.println("胖身体");
    19. }
    20. @Override
    21. public void BuildArmLeft() {
    22. System.out.println("胖左手");
    23. }
    24. @Override
    25. public void BuildArmRight() {
    26. System.out.println("胖右手");
    27. }
    28. @Override
    29. public void BuildLegLeft() {
    30. System.out.println("胖左腿");
    31. }
    32. @Override
    33. public void BuildLegRight() {
    34. System.out.println("胖右腿");
    35. }
    36. }
    37. public class PersonThinBuilder extends PersonBuilder{
    38. @Override
    39. public void BuildHead() {
    40. System.out.println("瘦头");
    41. }
    42. @Override
    43. public void BuildBody() {
    44. System.out.println("瘦身体");
    45. }
    46. @Override
    47. public void BuildArmLeft() {
    48. System.out.println("瘦左手");
    49. }
    50. @Override
    51. public void BuildArmRight() {
    52. System.out.println("瘦右手");
    53. }
    54. @Override
    55. public void BuildLegLeft() {
    56. System.out.println("瘦左腿");
    57. }
    58. @Override
    59. public void BuildLegRight() {
    60. System.out.println("瘦右腿");
    61. }
    62. }
    63. public class Test {
    64. // 客户端不需要知道具体的建造顺序
    65. public static void main(String[] args) {
    66. // 瘦子
    67. PersonBuilder personBuilder = new PersonThinBuilder();
    68. PersonDirector personDirector =new PersonDirector(personBuilder);
    69. personDirector.createPerson();
    70. // 胖子
    71. PersonFatBuilder personFatBuilder = new PersonFatBuilder();
    72. PersonDirector personDirector2 = new PersonDirector(personFatBuilder);
    73. personDirector2.createPerson();
    74. }
    75. }