• Principios GRASP

    Hola de nuevo. Después de los principios SOLID, vamos a dar un pasito más y vamos a tratar de explicar los principios GRASP (General Responsibility Assignment Software Patterns). GRASP describe 7 patrones que són: Alta cohesión y bajo acoplamiento Controlador Creador Experto en información Fabricación pura Indirección Polimorfismo Variaciones Protegidas...

  • Principios SOLID

    Hola hoy vengo con los principios SOLID. Aunque es un tema que conozco, el pasado sábado asistí a la NET. Conf 2018 y varias personas no tenían conocimiento sobre ellos y eso no se puede quedar así. Los presentamos: Single Responsability Open Closed Liskow Interface Segregation Dependency Injection Los detallamos:...

  • Patrón Visitor

    El patrón Visitor nos permite agregar operaciones a objetos sin tener que modificar la clase concreta de estos objetos. Su uso se recomienda para pequeñas y pocas funcionalidades extra. public inteface Visitante { void Visita(EditorialSinFilial editorialSinFilial); void Visita(EditorialMadre editorialMadre); } public abstract class Editorial { public string nombre { get;...

  • Patrón Template Method

    El patrón Template Method nos permite definir un esqueleto de métodos abstractos en los que cada clase concreta sobrecargará estos métodos para definir su comportamiento específico y cuya implementación difiera en algunos pasos. De esta forma, definimos una clase con métodos abstractos como si fuera un contrato o interfaz, y...

  • Patrón State

    El patrón State nos ayuda a que un objeto se comporte de forma diferente según un flag de estado. De esta forma, según cual sea el flag de estado, el objeto se comportará de una forma o de otra. El ejemplo más simple para entender este patrón, es en los...

  • Patrón Strategy

    El patrón Strategy nos permite definir varios algoritmos para aplicar sobre un objeto según nos convenga. De esta forma, podemos definir posibles acciones sobre las que decidiremos cual es la más correcta para aplicar según ciertas variables. Aunque es un patrón bastante sencillo… Lo que realmente hace es definir algoritmos...

  • Patrón Observer

    El patrón Observer se usa para crear una dependencia entre el objeto y otros que estén anexados a él. De esta forma, cuando se realiza una modificación en el primer objeto, los objetos anexados a el, reciben esta actualización. Aunque es clara la definición, lo que se trata es de...

  • Patrón Specification

    El patrón Specification es un patrón orientando a las aplicaciones con dominio. Es un patrón muy útil para validar queries y orientado a encapsular los objetos que pueden usarse en estas queries. Es un patrón que separa la responsabilidad entre los objetos a recuperar y como los obtenemos. Vamos con...

  • Patrón Memento

    El patrón memento previene en la encapsulación de un objeto el estado en que se encuentra en cada momento. De esta forma, si por algún motivo, necesitamos hacer un rollback de estos cambios del objeto, podamos restaurar sin romper nada. Es como tener un pila de estados de como ha...

  • Patrón Mediator

    El patrón Mediator nos ayuda a gestionar y controlar las interacciones entre un conjunto de objetos sin que deban conocerse entre ellos. Para los mortales, se define un objeto que tiene las reglas de interacción entre los objetos que se van a comunicar. ¿Todavía no? Veámoslo con un ejemplo: Esta...

  • Sin retornos NULL con Maybe

    Maybe es una estructura(Monad) que nos ayuda a no tener que trabajar con objetos NULL. De esta forma, el objeto, hereda una propiedad HasValue para determinar si es NULO o no, ahorrándonos el típico if (a != null) que tan feo queda en nuestro código. Así la estructura quedaría de...

  • Patrón Iterator

    El patrón iterator nos proporciona un mecanismo para recorrer colecciones de objetos de forma secuencial sin tener conocimiento de cómo están implementadas estas colecciones. Vamos con el ejemplo: public abstract class Item { protected string _descripcion; protected Item(string descripcion) { _descripcion = descripcion; } public bool PalabraClaveValida(string palabraClave) => _descripcion.IndexOf(palabraClave,...

  • Patrón Interpreter

    El patrón Interpreter nos proporciona la utilidad de transformar, la gramática del lenguaje, de tal forma que podamos evaluar, codificando estas expresiones del lenguaje natural, en objetos. En resumidas, nos da la facilidad de transformar el lenguaje que hablamos y con el que nos comunicamos, en lenguaje máquina. Y no,...

  • Patrón Command

    El patrón Command nos ayuda a transformar una solicitud en un objeto. Estas solicitudes tienen la propiedad de poder encolarse, ser borradas y actualizadas dentro de la cola de peticiones. Volviendo a nuestro caso de libros, todos sabemos que ciertos libros en IT son altamente propensos a quedarse obsoletos, para...

  • Patrón Chain of Responsability

    El patrón Chain Of Responsability nos ayuda a crear una secuencia de unión entre objetos tal que, si el objeto más interno de la cadena no es capaz de dar una respuesta, uno de los objetos de nivel superior será el encargado de darla. Esta respuesta será a nivel del...