Existe una clase LinkedList con funciones como add_first (), add_last (), add_after (), remove_first (), remove_last () y remove ()
Ahora hay una pila de clases que proporciona funcionalidades como push (), pop (), peek () o top (), y para implementar estos métodos, extiende los métodos de la clase LinkedList. ¿Es esto una violación del Principio de sustitución de Liskov?
Por ejemplo, considere el caso add_after () para agregar un nodo en la enésima posición de una Lista vinculada. Esto se puede hacer en la clase base pero no en la clase Stack. ¿Se están debilitando las condiciones posteriores aquí o modifica el método add_after () para agregar a la parte superior de la Pila?
Además, si no es una violación, ¿es este un mal diseño? ¿Y cómo implementaría la funcionalidad Stack usando la clase LinkedList?
LinkedList
? Es posible que desee prestar atención a los consejos de cierto Joshua Bloch (que jugó un papel importante en el diseño del marco de colecciones de Java) cuando dijo "Prefiera la composición sobre la herencia" - ¿Quizás tenga una LinkedList
clase dentro de su pila, pero en realidad no la extienda?
LinkedList
que hace el trabajo pesado detrás de escena (composición). De esa forma, los usuarios de su código no pueden usar accidentalmente una Pila donde necesitaban una Lista o viceversa.