-
Notifications
You must be signed in to change notification settings - Fork 0
La falla de la interfaz Todo en Uno
Implementar todo bajo el mismo paraguas de una interfaz para hacer todo no es una buena solución, por varias razones.
Algunas consecuencias negativas importantes son la sobrecarga intelectual, el gran tamaño y la ineficiencia. Las clases gigantescas no tienen éxito porque incurren en una gran sobrecarga de aprendizaje, tienden a ser innecesariamente grandes y conducen a un código que es mucho más lento que la versión artesanal equivalente.
Pero quizas el problema más imortante de una interfaz demasiado rica es la perdida de seguridad de tipo estático. Un propósito esencial de la arquitectura de un sistema es hacer cumplir ciertos axiomas por diseño, por ejemplo, no puede crear dos objetos Singleton
o crear objetos de familias disjuntas. Idealmente, un diseño debería imponer la mayoría de las restricciones en tiempo de compilación.
En una interfaz grande que lo abarca todo, es muy difícil hacer cumplir tales restricciones. Normalmente, una vez que ha elegido un cierto conjunto de restricciones de diseño, solo ciertos subconjuntos de la interfaz grande permanece semánticamente válidos. Crece una brecha entre los usos sitácticamente válidos y semanticamente válidos de la biblioteca. El programador puede escribir un número creciente de construcciones que son sintácticamente válidas, pero semánticamente ilegales.
Los diseños imponen restricciones; en consecuencia, las bibliotecas orientadas al diseño deben ayudar a los diseños creados por el usuario a imponer sus propias restricciones predefinidas.