Clase 10 - Cliente Servidor, MVC Principios SOLID
Clase 10 - Cliente Servidor, MVC Principios SOLID
Agenda
• Cliente – Servidor
• MVC
• Principios SOLID
Ventajas
Desventajas
Está vinculado con la representación de los datos con los cuales el sistema opera. Está relacionado a la lógica y
las reglas del negocio.
• Envía a la Vista, a través del controller, los datos solicitados para que sean visualizados
Responde a eventos (usualmente acciones del usuario) e invoca peticiones al modelo cuando se hace alguna
solicitud sobre los datos.
• Responde a eventos
• Posee lógica para poder representar los datos de la forma más “amigable” para el usuario
• La comunicación entre la vista y el controlador se realiza mediante objetos de transferencia (DTO - Data
Transfer Objects)
• En la vista se puede validar campos requeridos y consistencia (números y/o letras donde corresponda, entre
otras cosas).
• En el controlador se debería volver a validar la consistencia de los datos y los campos requeridos. También
se puede realizar una validación adicional contra un servicio externo.
Ventajas
Desventajas
Son principios básicos de Programación Orientada a Objetos y Diseño de Sistemas que nos ayudan a obtener
mejores diseños implementando una serie de reglas o principios.
Single
Responsibility
Principle
Dependency
Open Closed
Inversion
Principle
Principle
SOLID
Interface Liskov
Segregation Substitution
Principle Principle
• Cada clase debe tener responsabilidad sobre una sola parte de la funcionalidad del software.
• Esta responsabilidad debe estar encapsulada por la clase, y todos sus servicios deben estar estrechamente
alineados con esa responsabilidad.
• Las entidades deben estar abiertas para la expansión, pero cerradas para su modificación.
Se sugiere evitar la utilización excesiva de los “switchs” y propiciar el polimorfismo entre objetos
“Cada clase que hereda de otra puede usarse como su superclase sin necesidad de conocer las diferencias entre
las clases derivadas.”
• Los clientes de un componente sólo deberían conocer de éste aquellos métodos que realmente usan y no
aquellos que no necesitan usar.
• Muchas interfaces cliente específicas son mejores que una interfaz de propósito general.
Se debería propiciar un diseño orientado a interfaces, para mantener el acoplamiento entre clases al
mínimo posible, y también evitar generar interfaces extensas (con muchos métodos)
“Los módulos de alto nivel no deben depender de módulos de bajo nivel. Ambos deben depender de
abstracciones. Es una forma de desacoplar módulos.”
22