Tengo una aplicación basada en Squeryl. Defino mis modelos como clases de casos, principalmente porque considero conveniente tener métodos de copia.Herencia de clase de caso de Scala
Tengo dos modelos estrictamente relacionados. Los campos son los mismos, muchas operaciones son comunes y deben almacenarse en la misma tabla de DB. Pero existe algún comportamiento que solo tiene sentido en uno de los dos casos, o que tiene sentido en ambos casos pero es diferente.
Hasta ahora solo he usado una sola clase de caso, con una bandera que distingue el tipo de modelo y todos los métodos que difieren según el tipo de modelo que comience con if. Esto es molesto y no del todo seguro.
Lo que me gustaría hacer es factorizar el comportamiento común y los campos en una clase de caso ancestro y heredar los dos modelos reales. Pero, por lo que yo entiendo, heredar de las clases de caso está mal visto en Scala, e incluso está prohibido si la subclase es en sí misma una clase de caso (no es mi caso).
What are the problems and pitfalls I should be aware in inheriting from a case class? Does it make sense in my case to do so?
¿No podría heredar de una clase que no sea de caso o extender un rasgo común? – Eduardo
No estoy seguro. Los campos están definidos en el ancestro. Quiero obtener métodos de copia, igualdad, etc. basados en esos campos. Si declaro el padre como una clase abstracta y los hijos como una clase de caso, ¿tendrá en cuenta los parámetros de cuentas definidos en el padre? – Andrea
Creo que no, debe definir los accesorios tanto en el resumen padre (o rasgo) como en la clase de caso de destino. Al final, lot's o 'boilerplate, pero escriba safe al menos – virtualeyes