gpt4 book ai didi

javascript - 动态行为添加是使用装饰器模式的唯一优势吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:51:06 24 4
gpt4 key购买 nike

我目前正在研究 Decorator 设计模式,这个想法困扰着我很多。

只拥有一个具有与其特性对应的 boolean 值的基类会更容易吗?

例如:textview,如果textview基类有canVerScroll、canHorScroll、hasBorder的BOOL,则可以有垂直滚动、水平滚动、边框等;为什么这不比 Decorator 设计模式更好?

感谢您的帮助!

最佳答案

Would it be easier just to have one base class with boolean value corresponding to its feature?

这将违反称为开放-封闭 原则的SOLID 原则。 Open-Closed 原则指出组件应该对扩展开放但对修改关闭。如果您只有一个 TextView 类,则每次您想在 TextView 中引入新行为时都需要更改它。

why is this not better than Decorator design pattern?

假设您的 API 用户(无法访问您的 API 源代码)想要为 TextView 类引入一种名为Rotate 360​​ degrees 的新行为.他们在这里有两个选择,要么等待您将新的 BOOL 添加到 TextView 基类并支持此功能,要么想出一种方法在你的 TextView。他们可以选择的一个选项是创建一个 TextViewAdapter(阅读 Adapter pattern),这将允许他们在您提供的功能之外添加所需的功能。

如果您提供开箱即用的扩展 API 的能力,而不是创建一个没有您的干预就无法扩展的 API,这不是更好吗?

关于javascript - 动态行为添加是使用装饰器模式的唯一优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42359872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com