oop - builder 与装饰者模式

标签 oop design-patterns decorator builder

来自When would you use the Builder Pattern? ,

据说构建器模式适用于 Pizza 示例。

为什么不使用装饰器? 将奶酪、意大利辣香肠、培根作为基础披萨上的额外装饰。

是因为奶酪/意大利辣香肠必须单独构建吗?我认为,它们不需要单独构建,因为它们可以是现成的。

请澄清。 我还在寻找装饰器模式的一个很好的现实世界示例以及它适合该特定示例的原因。谢谢。

最佳答案

摘自维基百科的装饰器模式文章:

In object-oriented programming, the decorator pattern is a design pattern that allows new/additional behaviour to be added to an existing object dynamically.

披萨完全制作完成后,无需添加配料。您不会吃掉半个披萨,然后再添加其他配料。

换句话说,构建器模式可以轻松构造一个在构造时可在独立方向上扩展的对象,而装饰器模式则允许您向对象添加功能扩展施工时间之后。使用装饰器模式构造对象是不好的,因为它会使对象处于不一致(或至少不正确)的状态,直到所有必需的装饰器就位 - 类似于使用 setter 指定可选构造函数参数的 JavaBean 问题。

关于oop - builder 与装饰者模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4768349/

相关文章:

java - 可以替代 if 语句的设计模式

java - 应用设计模式设置和获取货币矩阵值

python - 那是奎因还是什么?

Python "Multi-Level Decorator"- 这是如何工作的?

java - 如何设计一个具有基类中没有的功能的子类?

Java: 'agent' 对象内部的 'world' 对象如何获取有关 'world' 的信息?

java - Java 日志记录习惯的动机

python - 装饰子类方法

c# - 要通过什么?引用对象还是值类型?

javascript - JS OOP 初学者培训错误