保持向后兼容性,无需单独的类

时间:2015-04-16 22:18:12

标签: oop design-patterns language-agnostic backwards-compatibility ooad

假设有一个名为Animal的类接收包含动物属性(typecolorsize)的请求,然后将其序列化并存储在数据库中。随着时间的推移,动物的属性会发生变化添加了一些东西,现在我们还有location

将有一个版本标志可用于随时分出请求。

你如何调整它可以处理旧请求和新请求的动物类?这有什么设计模式吗?

2 个答案:

答案 0 :(得分:2)

我认为你不需要特定的设计模式来实现这一目标。您可以尝试以下两种方法来评估哪种方法更适合您的情况:

  • 使用Animal::Request(type,color,size,location)之类的附加参数位置重载当前的Request方法,以便您的类可以同时处理这两个参数。有关重载here
  • 的更多信息
  • 为现有的Request方法添加默认位置参数,并将其视为type,color,size次调用,例如type,color,size,''次调用。有关默认参数here的更多信息。

答案 1 :(得分:2)

有时你只能做出向后兼容的东西,这取决于你的域逻辑(规则)。

如果有新的财产,例如" location"有一些默认值,您可以使用它,然后您可以处理旧请求,但如果您的应用需要该值才能正常工作,那么旧请求将无效。