什么是一些常见的,现实世界的例子使用Builder模式的?它给你带来了什么?为什么不使用工厂模式?
我正在研究GOF中记载的装饰模式.
请帮我理解装饰模式.有人可以给出一个用例,说明这在现实世界中有用吗?
我正在研究我的设计模式,我在编码中尚未认真使用的一种模式是装饰模式.
我理解这种模式,但我想知道的是现实世界中一些具体的例子,装饰者模式是最佳/最佳/优雅的解决方案.需要装饰器模式的特定情况非常方便.
谢谢.
我正在学习Builder模式
在上面的链接(Java示例)中,我注意到Builder提供了构造多个组件的接口.除了调用它们之外,我们还调用了getProduct().
我不明白的一点是,为什么Director需要逐个调用所有这些组件构造方法并最终获得结果.
/** "Director" */
class Waiter {
private PizzaBuilder pizzaBuilder;
public void setPizzaBuilder(PizzaBuilder pb) { pizzaBuilder = pb; }
public Pizza getPizza() { return pizzaBuilder.getPizza(); }
public void constructPizza() {
pizzaBuilder.createNewPizzaProduct();
pizzaBuilder.buildDough(); // construct component 1
pizzaBuilder.buildSauce(); // construct component 2
pizzaBuilder.buildTopping(); // construct component 3
}
Run Code Online (Sandbox Code Playgroud)
}
为什么我们不在ConcreteBuilder类中包含构造组件1,2,3的代码,而不是在Director中,实际上消除了Director层.
我知道上述方法可能会将Builder模式转变为其他方式,但我不明白为什么Director会逐步完成工作.有什么好处?如果有多个导演,会有重复的代码,对吧?我可能不理解执行Builder模式背后的动机......
更新:Builder模式是否专注于在创建更大的复杂对象时提供可自定义组件选择?否则,截至目前,我没有看到引入额外层的重点,即主任.
即使是这种情况,Decorator模式也可能是通过动态定制组件来实现相同目标.在某处,我错过了Builder背后的那一点...... :(