#61 He leído bastantes libros sobre el tema. No me considero un experto en OOP ni Java tampoco. Siempre se aprende algo nuevo como bien dices... Sobre referencias no mantengo una lista actualizada pero tengo esta de hace unos a;os donde hay alguno sobre la temática que comentas:
2018 y 2019htdp2
sicp
"Advanced Programming in the UNIX "
Introduction Algorithms
C programming language
The little schemer
Mythical man month
Clean code
Design pattern heuristics
Java in action
"Red book"
Learn you a haskell
"Haskell programming"
Effective java
Seasoned schemer
OO design heuristics
Clean architecture
"Hackers and painters"
Design patterns in dynamic prog
Pragmatic Programmer
Code Complete
Scala with cats
Notes for professionals Java, TS, Java, CPP, C, SQL
Concrete Abstractions
Por favor, sigamos. Me parece un debate interesante el tema de jerarquías de objetos y que prepongas el uso de estos patrones de dise;o pre java 1.8 (anteriores al 2014) en el a;o 2021 con java ya casi 17. Te he preguntado:
Ahora vamos a poner ademas el caso mas variable de todos, las películas cambian de tipología y ademas el precio de una novedad depende de la pelicula o de un factor externo. Si el precio de RegularPrice cambia y este depende de la pelicula como lo modificas?
No veo como tu jerarquía se adaptara los cambios de requerimientos. Es obvio que si tenemos un cine el precio dependerá de la película o puede haber eventos especiales. O puede haber packs que reduzcan aplicando descuentos... etc. Como se adapta exactamente es código?
porque si asignas a una clase la interfaz que no debes o la responsabilidad que no le corresponde, el día de mañana te será muy difícil hacer adaptaciones.
Entonces porque tu solución inicial es construir una jerarquía e implementar interfaces? Por que no propones hacer la solución mas simple y sencilla y mas mantenible desde un principio y te ahorras los problemas que te ocasionara?
Si tu mismo dices que una abstracción incorrecta hace que sea muy difícil hacer adaptaciones no es contradictorio proponer solucionar un problema haciendo abstracciones con jerarquías de objetos y dynamic dispatch si después te costara mantenerlo? Sin entrar en que no conoces como este se implementa internamente ni lo que supone, podemos dejar de lado la eficiencia y el rendimiento. No es contradictorio decir que tienes tantísimos beneficios de poco acoplamiento y fácil de modificar pero después te pido un cambio trivial y dices que cuesta cambiar el cogido y no me lo pones?