Me he hecho esta pregunta varias veces al crear clases, particularmente aquellas que involucran colecciones, pero nunca he encontrado una respuesta satisfactoria. Es una pregunta de diseño OOP.¿Debería instanciar una colección o heredar de la colección?
Por ejemplo, en un programa de registro de chequera, digo que tengo una clase de BankAccount
. Las cuentas bancarias contienen datos que incluyen el nombre de la cuenta, el tipo de cuenta (enumeración de verificación, ahorro, ...) y otros datos, pero lo más importante es una colección de Adjustment
s (depósitos o retiros) en la cuenta.
aquí, tengo dos opciones para mantener una colección de los ajustes:
- crear instancias de una colección y mantenerlo como un miembro de la clase CuentaBancaria. Esto es como decir "Cuenta bancaria tiene una colección de ajustes".
- Heredar de la colección. Esto es como decir "Cuenta bancaria es una colección de ajustes".
Creo que ambas soluciones son intuitivas, y, por supuesto, ambas ofrecen algunas ventajas y desventajas. Por ejemplo, la creación de instancias permite que la clase herede de otra clase (en idiomas que permiten solo una única clase base), mientras que heredar de la colección facilita el control de Agregar, Eliminar y otros métodos sin tener que escribir métodos sustitutos para "envolver" ' aquellos.
Entonces, en tales situaciones, ¿cuál es un mejor enfoque?
Eche un vistazo a este ensayo: http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html Describe cómo la herencia reduce el mantenimiento. – Ozan