【问题标题】:Inheriting from generated Protocol Buffer classes从生成的 Protocol Buffer 类继承
【发布时间】:2012-06-28 18:41:26
【问题描述】:

Protocol Buffer 文档警告说...

你不应该通过继承向生成的类添加行为 从他们。这样会破坏内部机制,不好 无论如何都是面向对象的实践。

来源:Protocol Buffer Basics

我的两部分问题是:

  1. 这会破坏哪些内部机制?
  2. 这在什么方面不是一个好的 OO 实践?

【问题讨论】:

    标签: protocol-buffers


    【解决方案1】:
    1. “出了什么问题”将是非常具体的实现。如果您引用了特定的实现,则可能会回答,但从更一般的意义上说:这不是受支持的场景,并且如果您子类化,实现不需要正确工作或根本不需要工作。这是一个未定义的行为,这意味着。此外,协议缓冲区不支持继承,因为并非所有目标平台都支持它。主要思想:

      • 可能有代码根据预期类型列表检查传入对象 - 如果您的不存在,它可能会失败
      • 它不会处理您添加的任何字段等
      • 序列化程序的整个想法是稳健地返回您序列化的内容;如果您序列化 SomeDerivedClass,则序列化程序无法将其返回给您
      • 像这样的库的全部意义在于隐藏血腥的实现细节;您不会被任何实现弄乱(多态性必须设计用于
    2. 作为 OO 问题;这不是你的类型;它是一个为特定目的而设计的 DTO。常见的用法可能是从 DTO 到/从您的域模型映射,这可能更复杂,或者如果有用的话,可能封装 DTO(也许作为立面)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2022-08-21
      相关资源
      最近更新 更多