1、出现原因
在软件系统中,有时候会面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂的对象的各个部分可能面临着剧烈的变化,但是把他们组合在一起的算法很稳定。
2、结构图
3、现实的简易的例子
1、客户找到包工头,要求建一个房子,
2、包工头找到不同的建筑队(Builder)来建筑房子的每个部分,建好房子后,交付给客户
3、客户不关心房子的建造细节,由包工头负责管理房子建造的细节
4、代码演示
//字部分A public class A { } //字部分B public class B { } //要创建的复杂的对象产品 public class Product { public A partA { set; get; } public B partB { set; get; } } //创建者 public class Builder { private Product p = new Product(); //将创建的方法公开给 外面,这样创建的顺序就可以由指导者决定 public void CreatA() { p.partA = new A(); } public void creatB() { p.partB = new B(); } //最后得到创建的产品 public Product GetResult() { return p; } } public class Directer { private Builder builder = new Builder(); //具体的创建过程(子对象的创建顺序)由 指导者 来决定 public void Contract() { builder.creatB(); builder.CreatA(); } public Product GetResult() { return builder.GetResult(); } } Builder模式
主函数调用:
1 Product p = null;//定义一个产品对象用来接收导者创建出来的产品 2 Directer directer = new Directer(); 3 directer.Contract();//创建产品 4 p = directer.GetResult();
5、适用性
1、需要生成的产品对象有复杂的内部结构。
2、需要生成的产品对象的属性相互依赖(可以通过Builder进行控制),建造者模式可以强迫生成顺序。 (生成顺序可以通过Builder进行控制)
设计模式Builder(建造者)模式,布布扣,bubuko.com
原文:http://www.cnblogs.com/wsylly/p/3573610.html