首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >装饰器模式与列表

装饰器模式与列表
EN

Stack Overflow用户
提问于 2012-07-23 08:57:17
回答 3查看 1.4K关注 0票数 9

在阅读Decorator pattern时,遇到了一些需要澄清的事情。在装饰器模式中,我们只是包装了一个给定的对象,并使用了一系列执行来进行计算。但是为什么我们不能有一个这些对象的列表并迭代每个对象呢?我的意思是,如果没有链,我们不能只使用列表和简单的迭代来遍历每个对象吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-23 10:08:11

我相信你错过了装饰者的重点。

装饰器的目标是透明地添加行为。Java中的InputStream就是一个典型的例子。您可以将类似缓冲的gzip特性链接到输入流。然而,经过修饰的输入流的“用户”不需要知道添加了额外的行为。用户只需将该修饰流用作普通流即可。当然,如果您将每个“行为”作为单独的对象,并将链存储为另一个列表,并显式地单独调用它们,那么它将会起作用。然而它失去了装饰器中的“透明性”。

票数 7
EN

Stack Overflow用户

发布于 2012-07-23 09:01:36

对于列表,您需要一些对象来管理列表以及遍历和应用对象。为了与插件兼容,管理器对象必须是所有对象的基类(通常是抽象的)的子类。它只是比让每个对象知道它包装了什么更不灵活,仅此而已。

票数 2
EN

Stack Overflow用户

发布于 2020-04-21 17:55:58

装饰动作将在对象中执行。对于列表,它位于对象的外部

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11605286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档