最近我遇到了Builder设计模式.似乎不同的作者使用"Builder模式"来引用不同的风格,所以让我描述一下我所询问的模式.
我们有一个用于创建产品的算法,即不同类型的对象.在足够高的抽象级别,所有产品类型的算法都是相同的,但每种产品类型都需要对每个算法的抽象步骤进行不同的实现.例如,我们可能有以下蛋糕烘焙算法:
1. Add liquids.
2. Mix well.
3. Add dry ingredients.
4. Mix well.
5. Pour batter into baking pan.
6. Bake.
7. Return baked cake.
Run Code Online (Sandbox Code Playgroud)
不同的蛋糕将需要这些步骤的不同实施,即,使用什么液体/干燥成分,混合的速度,烘烤多长时间等.
模式说是这样做的.对于每个产品,我们创建一个具体的构建器类,其中包含上述每个步骤的实现.所有这些类都派生自一个抽象构建器基类,它本质上是一个接口.因此,例如,我们将有一个抽象基类CakeBaker与纯虚方法AddLiquid(),MixLiquids()等等.具体的蛋糕面包师将是具体的子类,例如,
class ChocolateCakeBaker : public CakeBaker {
public:
virtual void AddLiquids()
{
// Add three eggs and 1 cup of cream
}
virtual void AddDryIngredients()
{
// Add 2 cups flour, 1 cup sugar, 3 tbsp cocoa powder,
// 2 …Run Code Online (Sandbox Code Playgroud)