【发布时间】:2010-05-20 12:29:42
【问题描述】:
我个人认为继承是一个很好的工具,如果应用得当,可以大大简化代码。
但是,在我看来,许多现代工具不喜欢继承。让我们举一个简单的例子:将一个类序列化为 XML。一旦涉及到继承,这很容易变成一团糟。尤其是当您尝试使用基类序列化程序序列化派生类时。
当然,我们可以解决这个问题。类似于KnownType 属性之类的东西。除了在你的代码中你必须记住每次添加派生类时都要更新之外,如果你从你的范围之外收到一个在编译时不知道的类,那也会失败。 (好吧,在某些情况下,您仍然可以解决这个问题,例如在 .NET 中使用 NetDataContract 序列化程序。这肯定是一个进步。)
无论如何,基本原则仍然存在:序列化和继承不能很好地混合。考虑到在过去十年中变得可能甚至很常见的大量编程策略列表,我很想说在与序列化相关的领域(特别是远程处理和数据库)应该避免继承。
这有意义吗?还是把事情搞砸了?你如何处理继承和序列化?
【问题讨论】:
-
这是否是另一个更喜欢组合而不是继承的原因?
-
我相信组合和继承各有各的应用。如果继承是两者中更好的选择,那我真的很想用它。我讨厌因为技术不支持更好的正确设计而不得不使用劣质设计。
标签: database inheritance serialization remoting