我有一个基于 Squeryl 的应用程序。我将模型定义为 case 类,主要是因为我发现使用复制方法很方便。
我有两个严格相关的模型。字段是相同的,许多操作是通用的,并且它们存储在同一个 DB 表中。有一些行为只在其中一种情况下有意义,或者在两种情况下都有意义,但是有所不同。
到目前为止,我只使用了一个 case 类,带有一个区分模型类型的标志,所有根据模型类型不同的方法都以一个 if 开头。这很烦人,而且不太安全。
我想要做的是分解祖先案例类中的常见行为和字段,并让两个实际模型从中继承。但是,据我所知,从 case 类继承在 Scala 中是不被允许的,甚至在子类本身是 case 类的情况下也是被禁止的(我的情况不是这样)。
从 case 类继承时应该注意的问题和陷阱是什么?我这样做有意义吗?