【问题标题】:Pattern name for 'formatting' objects“格式化”对象的模式名称
【发布时间】:2017-04-06 10:12:00
【问题描述】:

我有一个带有 getter 的 Order 值对象。目前我将此对象传递给Formatter 类,该类使用getter 创建特定的数组结构。然后将此数组编码为 JSON 并发送到远程 URL。

有不同的 URL 需要不同的数组结构,所以我创建了多个 Formatter 类来构建各自的数组。在某种程度上,这些格式化程序“包装”了原始对象,但我没有公开的 getter 方法从格式化程序中公开原始对象。此外,每个格式化程序中只公开了一个名为 format 的公共方法。

这些格式化程序是否可以被描述为装饰器/包装器模式,或者这甚至是一种模式?我并没有明确寻找为此应用模式,但我发现我在代码的其他部分使用了其他模式并适当地重命名它们以减少混乱。

【问题讨论】:

  • 这不是序列化器吗? format 的唯一目的是将其序列化为 JSON 吗?

标签: oop design-patterns


【解决方案1】:

考虑Visitor 模式。访问者允许在运行时将一个或多个操作应用于一组对象,从而将操作与对象结构解耦。

Visitor 用于编译器。一旦创建了抽象语法树(对象结构),您就可以为不同的目的遍历 AST。 在您的情况下,ObjectStructure 可以是 Order 类,不同的用途反映不同的 Formatter。

【讨论】:

猜你喜欢
  • 2017-01-03
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-26
  • 2015-07-06
  • 2012-02-12
相关资源
最近更新 更多