协议缓冲区文档警告说...
您永远不应该通过从它们继承来向生成的类添加行为。这将破坏内部机制并且无论如何都不是好的面向对象的实践。
来源:协议缓冲区基础
我的两部分问题是:
- 这会破坏哪些内部机制?
- 无论如何,这在什么方面不是一个好的 OO 实践?
协议缓冲区文档警告说...
您永远不应该通过从它们继承来向生成的类添加行为。这将破坏内部机制并且无论如何都不是好的面向对象的实践。
来源:协议缓冲区基础
我的两部分问题是:
“出了什么问题”将是非常具体的实现。如果您引用了特定的实现,则可能会回答,但从更一般的意义上说:这不是受支持的场景,并且如果您子类化,则不需要实现正常工作或根本不需要。这是一个未定义的行为,这意味着。此外,协议缓冲区不支持继承,因为并非所有目标平台都支持它。关键思想:
SomeDerivedClass
,则序列化程序无法将其返回给您作为面向对象的关注;这不是你的类型;它是一个为特定目的而设计的 DTO。常见的用法可能是从 DTO映射到您的域模型/从您的域模型映射,这可能更复杂,或者如果有用的话可能封装DTO(可能作为外观)。