教科书上是这么描述的:
(1) 意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
(2) 适用性:
当同时满足以下情况的时候可以使用Builder模式
a. 当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式;
b. 当构造过程必须允许构造的对象有不同的表示;
(4)使用协作:
以上教科书的描述了。除了最后一幅图,其他的都读起来挺晦涩的。下面开始用白话文解释下我自己的理解:
<span style="white-space:pre"> </span>RealBuilder* builder= new RealBuilder();
<span style="white-space:pre"> </span>Director* director=new Director(builder);
<span style="white-space:pre"> </span>builder->AddArm(1);
<span style="white-space:pre"> </span>builder->AddArm(2);
<span style="white-space:pre"> </span>builder->AddLeg(1);
<span style="white-space:pre"> </span>builder->AddLeg(2);
这样感觉就我理解的builder模式了。