相关疑难解决方法(0)

你什么时候使用Builder模式?

什么是一些常见的,现实世界的例子使用Builder模式的?它给你带来了什么?为什么不使用工厂模式?

java design-patterns builder

512
推荐指数
11
解决办法
22万
查看次数

用一个真实的例子来理解"装饰模式"

我正在研究GOF中记载的装饰模式.

请帮我理解装饰模式.有人可以给出一个用例,说明这在现实世界中有用吗?

design-patterns decorator

163
推荐指数
5
解决办法
8万
查看次数

何时使用装饰器模式?

我正在研究我的设计模式,我在编码中尚未认真使用的一种模式是装饰模式.

我理解这种模式,但我想知道的是现实世界中一些具体的例子,装饰者模式是最佳/最佳/优雅的解决方案.需要装饰器模式的特定情况非常方便.

谢谢.

design-patterns decorator

58
推荐指数
5
解决办法
3万
查看次数

Builder模式:为什么Director构造对象?

我正在学习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背后的那一点...... :(

oop ooad design-patterns builder-pattern

6
推荐指数
3
解决办法
3942
查看次数

标签 统计

design-patterns ×4

decorator ×2

builder ×1

builder-pattern ×1

java ×1

ooad ×1

oop ×1