我有一个对象数组。我想通过一些步骤来传递它,这些步骤将修改数组中的每个对象。这些步骤彼此独立,并且可能并非在所有情况下都使用。寻找可能描述此行为的设计模式。
由于
答案 0 :(得分:11)
您可能正在寻找Visitor模式。
答案 1 :(得分:2)
我会使用Composite
和Command
模式。每个离散操作都是Command
实例,在模式指定的execute
方法中实现。我会使用Composite
因为您想要执行多于1个命令。实际上,您将拥有一个“复合命令”,您可以将其应用于数组的每个元素。
答案 2 :(得分:2)
在我看来,你正在描述一条管道。
关于此模式的一篇文章是http://stevenatkinson.wordpress.com/2009/03/02/pipeline-design-pattern/。
答案 3 :(得分:1)
对每个收集对象执行操作 - >迭代者或访客
封装一系列操作 - >命令
答案 4 :(得分:1)
访客是进行操作的不错选择。
答案 5 :(得分:1)
也许你应该看看“责任链”模式。这种模式的目标非常接近(如果不等于)您表达的内容。一系列可响应性由几个可以处理请求的共同组成。在您的情况下,请求是您的数组;每个命令都可以修改数组;在处理数组之后,每个命令都会调用Responsiblity链中的下一个命令。
GoF的“设计模式”非常清楚地解释了这种模式。
答案 6 :(得分:0)
我认为访问者模式更适合此目的,即使我个人不喜欢使用它,因为它有时会违反对象封装,因为它可以访问所有访问过的类实现细节。
答案 7 :(得分:0)