java creando una ArrayList de objetos que heredan de diferentes clases

Estoy confundido.
He creado una clase abstracta 'Persona' y luego extiendo la clase 'Empleado a tiempo parcial' de Persona. Luego extiendo una clase abstracta de Persona llamada 'Empleado de tiempo completo'.
Luego creo dos clases nuevas llamadas 'Nuevo empleado de tiempo completo' y 'Empleado titular de tiempo completo' que se extienden desde Empleado de tiempo completo.

Quiero realizar un seguimiento de todos los empleados en una ArrayList... y aquí es donde estoy atascado conceptualmente. Creo una clase llamada Base de datos que se extiende desde ArrayList.

¿Cómo puedo asegurarme de que la matriz pueda contener las 3 clases que necesito? ¿Hago la matriz del tipo de clase Abstract? Eso me hace pensar que no tendría acceso a los métodos que definí en las clases heredadas... También he leído que no es una buena práctica extender desde ArrayList... entonces, ¿tendría sentido crear un clase de base de datos con un ArrayList? ¿Eso todavía me permitiría acceder a todo lo que he definido en la línea?

Por ejemplo, si quiero mostrar la lista completa, ¿cómo sabrá qué función de visualización usar? ¿El empleado de tiempo completo titular o el nuevo empleado de tiempo completo?

Gracias !!

preguntado el 27 de julio de 12 a las 18:07

1 Respuestas

Tienes algunas opciones. Si las clases solo difieren en el comportamiento, entonces puede usar el patrón de estrategia. Si realmente necesita mantener objetos de diferentes tipos en un objeto List y luego hacer cosas diferentes según ese tipo, puede usar el patrón de visitante. Mi conjetura es que deberías deshacerte de parte de esa herencia y optar por algo como una estrategia que abstraiga el comportamiento que difiere de las clases.

http://www.oodesign.com/strategy-pattern.html

http://www.oodesign.com/visitor-pattern.html

Para responder a su segunda pregunta, tiene razón ... en lugar de extender ArrayList, debería tener algo como

List<Person> people = new ArrayList<Person>();

Luego, utilizando uno de los dos patrones sugeridos anteriormente, puede manejar los diferentes comportamientos.

respondido 18 nov., 14:18

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.