首页 > 代码库 > Builder模式

Builder模式

Builder模式

创建型

动机

在软件系统中,有时候面临一个"复杂对象"的创建工作,其通常由各个部分的子对象用一定算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合到一起的算法却相对稳定.

与抽象工厂不同的是,他只创建一个对象,只是把创建过程分开了.同时需要一个客户程序来指挥创建过程(先创建什么部分,创建几个).抽象工厂的对象是相互之间是有关系的(引用),Builder中创建各个部分组成一个整体对象.

意图

将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示(变化)

技术分享

技术分享

例子

  1. //创造器(抽象)
  2. public abstract class Builder
  3. {
  4. public abstract void BuildDoor();
  5. public abstract void BuildWall();
  6. public abstract void BuildWindows();
  7. public abstract void BuildFloor();
  8. public abstract void BuildHouseCeiling();
  9. public abstract House GetHouse();
  10. }
  11. //最终的产品(抽象)
  12. public abstract class House{
  13. }
  14. //指挥者
  15. public class Director
  16. {
  17. public void Construct(Builder builder)
  18. {
  19. //"组合到一起的算法/创建算法"是稳定的
  20. //顺序和数量等都是可定制的
  21. builder.BuildWall();builder.BuildWall();
  22. builder.BuildHouseCeiling();
  23. builder.BuildDoor();
  24. builder.BuildWindows();
  25. builder.BuildFloor();
  26. }
  27. }
  28. public static void Main(){
  29. //可以采取动态的方式,修改构造函数构造的创造器
  30. Director direc=new Director(new MyBuilder());
  31. }

要点

  • 用于构建分步骤构建一个对象,构造步骤是稳定的
  • 变化点在部分构造细节的变化
  • 通常与Composite组合使用

变化
对象各个部分内部实现

不变
对象创建算法,对象部分的个数



null


Builder模式