作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近我遇到了 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.
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 bars ground chocolate, 2 tsp baking powder
}
...
...
};
LemonCitrusCakeBaker
也将是
CakeBaker
的子类, 但会在其方法中使用不同的成分和数量。
Cake
的子类。基类。
ExecutiveBaker
.此类将接受(来自客户端)一个具体的构建器对象并使用其方法来创建和返回所需的产品。
最佳答案
构建器模式的核心部分涉及抽象构建器及其子类(具体构建器)。根据GoF's Design Patterns ,director 只是“在需要构建产品的一部分时通知构建器”,这可以由客户完美地完成。
StringBuilder Java API 中的类是一个没有相应导向器的构建器示例——通常是客户端类“导向”它。
此外,在 Effective Java和 Creating and Destroying Java Objects , Joshua Bloch 建议使用 builder 模式,并且他不包括导演。
关于design-patterns - 生成器设计模式 : Why do we need a Director?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4313172/
我是一名优秀的程序员,十分优秀!