建造者模式的几种演化
省略抽象建造者角色
系统中只需要一个具体建造者,省略掉抽象建造者,结构图如下:
指导者代码如下:
省略指导者角色1 class Director 2 { 3 private ConcreteBuilder builder; 4 5 public void Construct() 6 { 7 builder.BuildPartA(); 8 builder.BuildPartB(); 9 } 10 }
抽象建造者角色已经被省略掉,还可以省略掉指导者角色。让Builder角色自己扮演指导者与建造者双重角色。结构图如下:
建造者角色代码如下:
客户程序:1 public class Builder 2 { 3 private Product product = new Product(); 4 5 public void BuildPartA() 6 { 7 // 8 } 9 10 public void BuildPartB() 11 { 12 // 13 } 14 15 public Product GetResult() 16 { 17 return product; 18 } 19 20 public void Construct() 21 { 22 BuildPartA(); 23 BuildPartB(); 24 } 25 }
1 public class Client 2 { 3 private static Builder builder; 4 5 public static void Main() 6 { 7 builder = new Builder(); 8 builder.Construct(); 9 Product product = builder.GetResult(); 10 } 11 }