Friday, September 28, 2018

Implementación y adaptación de patrones de diseño


De acuerdo con el autor Christopher Alexander (1977) cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, y describe la esencia de la solución a ese problema, de tal modo que pueda utilizarse esta solución un millón de veces más, sin siquiera hacerlo de la misma manera dos veces. Asimismo, Bergin señala que los patrones capturan las practicas de los expertos, comunican este conocimiento a otros, resuelven problemas a problemas recurrentes, es un vocabulario de soluciones, equilibra un conjunto de fuerzas y pueden trabajar con otros patrones.

Entonces, un PATRÓN permite dar solución a un problema en un determinado contexto particular, recurrente (lo que hace la solución relevante a otras situaciones), enseña lo que quiere decir que permite entender cómo adaptarlo a la variante particular del problema donde se quiere aplicar asimismo tiene un nombre especifico para referirse al patrón.

Para la IMPLEMENTACIÓN DE PATRONES se debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Además estos deben ser reusables, es decir, que se puedan aplicar a diferentes problemas de diseño en distintas circunstancias. De la misma manera los patrones facilitan la reutilización de diseños y arquitecturas software que ya han tenido éxito. Y es así como los patrones de diseño generalmente están compuestos de varias unidades arquitecturales más pequeñas de tal manera que permiten también describir el esquema básico para estructurar subsistemas y componentes.

VENTAJAS DE LOS PATRONES DE DISEÑO
_________________________________________________________________________

La utilización de estos patrones se basa en que ayudan a “arrancar” en el diseño de un programa complejo.

  • Ofrecen una descomposición de objetos iníciales.
  •  Están hechos para que el programa sea escalable y fácil de mantener.
  • Existe gran cantidad de desarrolladores que implementan patrones de diseño y les ha ido bien.
  • Ayudan en la reutilización de código y técnicas.
  • Brindar  la interacción con altos niveles de abstracción.
  • El diseño se puede aplicar a diferentes situaciones.

Se debe tomar en cuenta que un lenguaje de programación no esta ligado a un patrón de diseño y para implementar un patrón de diseño es necesario apoyarnos en el lenguaje (UML). De esta manera se puede decir que un patrón de diseño es una interacción entre objetos que actuaran de una determinada manera para solucionar un problema que se repite una y otra vez. Ademas, un patrón de diseño posee ciertas características de manera tal que debe tener un nombre, pertenece a cierta categoría, define el problema que resuelve, define las circunstancias en las cuales pueda aplicarse y sobre todo también define cuales son las consecuencias de uso.

Por ejemplo tenemos un patrón al que se llamará "ensamble" el cual pertenecerá a una de las tres categorías de los patrones de diseño entre ellos esta los creacionales, estructurales y de comportamiento, este ejemplo aplicara para la categoría de creacionales ya que me permitirá crear una bicicleta. Es importante agregar que los patrones tienen asociados un conjunto de reglas, pero para efectos del ejemplo el patrón deberá cerciorarse de que se cumpla reglas como que la bicicleta tiene dos ruedas, un cuadro una cadena, un par de pedales, un asiento, entre otros. Para ello el patrón que se creara debe entrar en un contexto de manera tal que debe conocer la situación o problema en donde se detallaran los objetos que requiero para el ensamble de bicicleta dado que se necesita de la interacción de estos objetos para solucionar el problema. Seguidamente para el ensamble de la bicicleta es necesario partir de los componentes que la conforman y mediante el patrón creacional permitirá que haya la interacción entre estos objetos para así crear la bicicleta.Entonces, el patrón ensamble permitirá unir las entradas  las cuales son cada componente de la bicicleta para de esta manera finalmente crear la bicicleta.

Los patrones de diseño es de importancia en el desarrollo del software ya que nos facilita poder reutilizar el código que ayudara a reducir el tiempo de desarrollo y sobre todo ofrecerá la oportunidad de tener un código robusto, flexible y además que pueda ejecutarse sin problemas.



CATEGORÍAS DE PATRONES DE DISEÑO
_________________________________________________________________________
  • Patrones de creación: Estos patrones tratan de la inicialización y configuración de clases y objetos. Permiten que el sistema sea independiente de cómo se crean, componen o representan sus objetos.
  • Patrones estructurales: Estos  se refieren al ¿Cómo se componen clases y objetos? ya que tratan de desacoplar la interfaz e implementación de clases y objetos. Se trata de conseguir que cambios en los requisitos de la aplicación no ocasionen cambios en las relaciones entre los objetos.
  • Patrones de comportamiento: Estos tratan ¿Cómo interaccionan y se distribuyen responsabilidades los objetos? ya que conocen las interacciones dinámicas entre sociedades de clases y objetos.


Entre el diseño de patrones estructurales tenemos los adaptadores:
  1.  Adapter (Propósito) 
    También es conocido como wrapper (envoltorio). Este patrón permite convertir la interfaz de una clase en otra distinta que espera el cliente además de aprobar que un conjunto de clases con interfaces incompatibles trabajen juntas. Para ello, un objeto adaptador reenvía al otro objeto los datos que recibe (a través de los métodos que implementa, definidos en una clase abstracta o interface) tras manipularlos en caso necesario.
  2. Adapter (Aplicabilidad)
    Es necesario usar el patrón Adapter cuando se quiera utilizar una clase ya existente, pero cuya interfaz no coincide con la que necesitas. Además funciona para crear una clase reutilizable que coopere con otras no relacionadas, es decir, con clases que puedan no tener una interfaz compatible. Asimismo (object adapter) se debe usar sólo cuando necesites usar varias subclases existentes pero no sea práctico adaptar sus interfaces. Un object adapter puede adaptar la interfaz de la clase padre.
  3. Adapter (Participantes)
    -Target (Shape): define la interfaz específica de dominio que el cliente usa.
    -Client (DrawingEditor): colabora con los objetos que implementan la interfaz definida por el target.
    -Adaptee (TextView): define una interfaz existente que necesita adaptarse.
    -Adapter (TextShape): adapta la interfaz del objeto adaptado a la definida por el target.
Estructura del patrón Adaptador

El objetivo es poder adaptar un objeto a otro, con el fin de poder utilizar las características del objeto original en un ambiente diferente. Este patrón es muy útil cuando un objeto resulta muy difícil de trabajar o cuando se necesita utilizar características de un objeto que requiere adaptarse a un ambiente diferente. Un ejemplo sencillo podría ser las conexiones eléctricas que existe en América y Europa estas son deferentes pero se utilizan adaptadores que permiten recargar los gallet en los get.

Otro uso importante es cuando estas trabajando con un código fuente que legalmente no puedes modificar pero que tiene algunas propiedades que requieres utilizar lo que hace es crear un adaptador que pueda interactuar con dicho código.

Otro EJEMPLO, supongase que se tiene que utilizar un objeto el cual se llamará "NombreDetalle" que tiene un estructura especifica pero utilizando un objeto ya existente, el cual se deduce que se sabe como trabaja pero si puede utilizar en el programa. Como se observa en la figura el objeto nombre no encaja correctamente en el nuevo objeto "NombreDetalle", de esta manera lo que debemos hacer es utilizar un adaptador que se ajuste al objeto "NombreDetalle" para poder utilizarlo de la siguiente manera como muestra la figura:



Ahora se mostrará el ejemplo mediante un sencillo programa que tendrá un objeto "Nombre" el cual recibirá una cadena y lo que hará simplemente será devolver la cadena que recibe. Es bastante sencillo para ello se solicita que ingrese nombre y apellido que luego que el usuario lo ingrese será capturado por el "objetoNombre" para seguidamente mostrar por pantalla lo que digite el usuario:




Al compilar y ejecutar solicitara que se ingrese el nombre y el apellido y el objeto informa que el nombre completo es el que ingreso el usuario. Pero ahora se va adaptar utilizando el mismo "objetoNombre" para  que se muestre el nombre aparte y el apellido aparte pero utilizando exactamente el mismo procedimiento que el usuario digite su nombre y su apellido en una sola línea.
Para ello se observa que lo único que conocemos del "objetoNombre" es que tiene los métodos "setNombreCompuesto" el cual recibe una cadena string y un método de "getNombreCompuesto" que devuelve la cadena que se recibió, para ello se va a adaptar ese "objetoNombre" para que utilizando los mismos métodos se pueda identificar el nombre y apellido aparte. Se muestra la clase adaptador la cual cuenta con atributos un "objetoNombre", una cena que se llamará "nombre" y una cadena llamada "apellido". Además el constructor el cual recibirá como parámetro un "objetoNombre" y luego lo que hace es recibir la cadena del "objetoNombre" y se divide en dos partes el nombre y el apellido, cada parte de la cadena se guardara en su correspondiente atributo.




El adaptador recibirá como parámetro el "objetoNombre" el cual se encargará de dividir la cadena introducida por el usuario y de esta manera mostrar en una línea diferente el nombre y el apellido. Al ejecutarlo se mostrara cada cadena en una línea de esta forma:





TIPO DE PATRONES DE DISEÑO
_________________________________________________________________________

  • FACADE

Es un patrón fundamental de diseño que provee una interfaz única para un conjunto de interfaces dentro de un subsistema. Define una interfaz de nivel superior que hace que el uso del subsistema sea más fácil. El patrón FACADE simplifica el acceso a un conjunto de clases proporcionando una única clase que todos utilizan para comunicarse con dicho conjunto de clases.

Ventajas      
  • ·  Los clientes no necesitan conocer las clases que hay tras la clase FACADE.
  •  Se pueden cambiar las clases “ocultadas” sin necesidad de cambiar los clientes. Sólo hay que realizar los cambios necesarios en FACADE.
  •   La estructuración del sistema en subsistemas ayuda a reducir la complejidad.
  •   La interfaz de las clases o de un grupo de clases puede ser compleja.

Estructura de FACADE:

  • MEDITOR
Define a un objeto que encapsula cómo interactúan un conjunto de objetos. Promueve bajo acoplamiento, evitando que los objetos se comuniquen entre sí explícitamente, y permite variar la interacción entre ellos de forma independiente.

Aplicabilidad
  • Cuando un conjunto grande de objetos se comunica de una forma bien definida, pero compleja.
  • En la reutilización de objetos. Existe dificultad al hacer referencia a varios objetos para mantener comunicación. 
  • Cuando el comportamiento de muchos objetos está distribuido entre muchas clases, adaptándolo sin mucha herencia.
Estructura de Meditor




Grupo GO:  
Alvaro Gil
Yorgelis Quintero 


18 comments:

  1. Los Patrones de Diseños son de gran utilidad ya que facilitan nuestro dia a dia permitiéndonos asi ahorrar tiempo debido a que arrojan una solución ingeniosa a un problema cuando estás modelando el software, el desarrollo es un proceso casi artístico, y ese reto mental que supone revierte en una satisfacción personal enorme una vez que se consigue un buen resultado.
    Buscar siempre una nueva solución a los mismos problemas reduce tu eficacia como desarrollador, porque estás perdiendo mucho tiempo en el proceso. No hay que olvidar que el desarrollo de software también es una ingeniería, y que por tanto en muchas ocasiones habrá reglas comunes para solucionar problemas comunes.
    Los patrones de diseño atajan ese punto. Una vez los conozcas, contarás con un conjunto de “trucos”, de reglas, de herramientas muy probadas, que te permitirán solucionar la mayor parte de tus problemas de forma directa, sin tener que pensar en cómo de válidas son, o si puede haber una alternativa mejor.
    Además, Te ayudan a estar seguro de la validez de tu código siempre que creamos algo nuevo nos surge la duda de si realmente estamos dando con la solución correcta, o si realmente habrá una respuesta mejor. Y el tema es que es una duda muy razonable y que en muchos casos la respuesta sea la que no deseas: sí que hay una solución más válida, y has perdido tu valioso tiempo en implementar algo que, aunque funciona, podría haberse modelado mejor. Establecen un lenguaje común, modelar tu código mediante patrones te ayudará a explicar a otras personas, conozcan tu código o no, a entender cómo has atajado un problema. Además ayudan a otros desarrolladores a comprender lo que has implementado, cómo y por qué, y además a descubrir rápidamente si esa era la mejor solución o no.
    Los patrones de diseño son estructuras probadas por millones de desarrolladores a lo largo de muchos años, por lo que si eliges el patrón adecuado para modelar el problema adecuado, puedes estar seguro de que va a ser una de las soluciones más válidas que puedas encontrar.

    ReplyDelete
  2. La implementación y adaptación de patrones de diseño son de gran utilidad al momento de la creación de un software, nos permiten reducir el tiempo de desarrollo del sistema, aumenta la eficiencia de este, asegura su consistencia, brinda disminución en el esfuerzo de mantenimiento y además protege la inversión del desarrollo del software realizada por el programador. Los patrones de diseño se pueden clasificar también en arquitecturales (los cuales expresan un paradigma fundamental para la estructura de un sistema software; ejemplo de estos podría ser la jerarquías de capas y cliente/servidor); patrones de diseño ( el cual se encuentra compuesto de varias unidades más pequeñas que describe el sistema básico, por ejemplo puede ser proxes y adaptadores); los patrones elementales los “idims” ( no son otros que los lenguajes de programación, se describe como implementar correctamente particiones de patrón , por ejemplo las modularidades y las concurrencias). La implementación y adaptación de estos patrones a nuestros software que estamos diseñando también nos permite la reutilización de código y por ende ahorro de tiempo, ya que la solución a estos errores o problemas a causa de que es un patrón pueden ser usados muchas veces.

    ReplyDelete
  3. ¿Que mas facil que cuando se presente un problema en el desarrollo de software ya exista un patron de diseño que ayude como resolverlo?
    es muy ventajoso para los nuevos desarrolladores y programadores la cantidad de herramientas de diseño que han sido creadas para mejorar y optimizar el proceso de creacion de softwares informaticos, y pues la suerte que se tiene de vivir en esta epoca en que ya la rueda ha sido inventada y solo puede mejorarse ya que no la puedes reinventar. Es por ellos que estas practicas en las que se utilizan estos patrones han permitido que en los ultimos años el desarrollo de software y los productos que salen de ellos incrementaran su calidad de manera exorbitante, ya que si recordamos como eran los programas, sistemas operativos y paginas web de hace diez años se nos hace increible como estos estaban diseñados y estructurados, lo que causa el mismo efecto a cuando vemos una pelicula antigua en la que todos los efectos especiales nos parecen muy malos, y en ese momento pensabamos que eran los efectos mas increibles del mundo. Así sucede igual con las paginas web, los sistemas operativos de telefonos moviles, computadores y las gran mayoria de dispositivos que ofrecen una interfaz grafica, ahora se puede notar enormemente la evolucion en ellos y todo eso es debido al trabajo que otros desarrolladores decidieron enmarcar en este tipo de patrones de diseño y dejar como plantilla para que todo mejorara como ha mejorado.

    ReplyDelete
  4. De acuerdo a lo expuesto, podemos decir que este tipo de patrones se enfoca prácticamente en soluciones que anteriormente han sido utilizadas o dicho de otra forma, permite hacer el sistema reusable y flexible a su vez, proporcionando así a los desarrolladores de software resolver problemas comunes. Estos se encuentran relacionados de cierta forma con los patrones GoF, básicamente llegan a tocar puntos muy similares sólo que no se rigen por las mismas reglas para resolver los problemas, sin embargo, los patrones en sí permiten no solo describir el problema central, sino que también se encargan de describir cuando aplicar el patrón, los elementos que componen el diseño y sus relaciones. Como lo haría cualquiera que desee manejar de forma exitosa un software por medio de patrones lo primero que debe hacer es prepararse y eso implica, estudiar sus estructuras, lenguajes, la forma de programar, sin dejar pasar que para esto se deben evaluar los trabajos o diseños de otras personas, de esto se trata, de crear una idea de lo que se ha hecho anteriormente para poder evaluar esos patrones y así re diseñar y establecer una mejor versión.

    ReplyDelete
  5. Estoy totalmente de acuerdo con el comentario anterior que hizo mi compañero, los patrones de diseño ayudan a estandarizar el código, haciendo que el diseño sea más comprensible para otros programadores. Son excelentes herramientas, y como programadores, deberíamos usar siempre las mejores herramientas a nuestro alcance. Aunque estos patrones tengan sus desventajas en lo que respecta a la sobrecarga de trabajo a la hora de implementar, sus ventajas tienen más peso y es que son capaces de disminuir el esfuerzo de mantenimiento y evitar la redundancia en la búsqueda de problemas ya conocidos, además de ahorrar tiempo en la construcción de software.
    Al momento de desarrollar aplicaciones robustas y fáciles de mantener, deberíamos cumplir con ciertos lineamientos, digo deberíamos porque aunque estas reglas son muy recomendables, no son obligatorias. Aun así debemos tomar en cuenta las limitaciones o consecuencias que se puedan presentar por no seguirlas.

    ReplyDelete
  6. This comment has been removed by the author.

    ReplyDelete
  7. Ahora bien a lo largo del blog se ha realzado todos los beneficios o ventajas pero hay que señalar ciertas desventajas de los distintos patrones de diseño por ejemplo Los proyectos reales raramente siguen el flujo secuencial que propone el modelo, siempre hay iteraciones y se crean problemas en la aplicación del paradigma.
    Normalmente, es difícil para el cliente establecer explícitamente al principio todos los requisitos. El ciclo de vida clásico lo requiere y tiene dificultades en acomodar posibles incertidumbres que pueden existir al comienzo de muchos productos.
    El cliente debe tener paciencia. Hasta llegar a las etapas finales del proyecto, no estará disponible una versión operativa del programa. Un error importante no detectado hasta que el programa este funcionando puede ser desastroso.
    Pero claro la principal ventaja de la implementación y adaptación de los patrones de diseño radica en su sencillez ya que sigue los pasos intuitivos necesarios a la hora de desarrollar el software."
    Los patrones de diseño describen la solución a problemas que se repiten una y otra vez en nuestros sistemas, de forma que se puede usar esa solución siempre que haga falta. Capturan el conocimiento que tienen los expertos a la hora de diseñar. Ayudan a generar software “maleable” (software que soporta y facilita el cambio, la reutilización y la mejora). Son guías de diseño, no reglas rigurosas.

    ReplyDelete
  8. Los patrones de diseño están orientado como "mejores prácticas" que el desarrollador puede usar para resolver problemas comunes cuando diseña una aplicación. Como ya se ha hablado los patrones de diseño ayudan a estandarizar el código, dando así como resultado que el diseño sea más comprensible para otros programadores. Lo importante de implementar un patrón de diseño es que sea fácil de adaptarse en cualquier otro trabajo que se esté realizando, es decir, que sea capaz de reutilizarse y de esta manera nos ayuda a ahorrar tiempo. El patrón adaptador como lo menciona aquí lo que hace convertir la interfaz de una clase en otra interfaz que el cliente espera, además permite a las clases trabajar juntas, lo que de otra manera no podría hacerse debido a sus interfaces incompatibles, en otras palabras este patrón es usualmente aplicado cuando se quiere transformar una estructura a otra, pero sin tocar la original, ya sea porque no se puede o no quiere cambiar.

    ReplyDelete

  9. Los patrones de diseño permiten que una parte del sistema varié de forma independiente sin afectar a las demás partes. Estos ayudan a poder estructurar clases y objetos para poder resolver ciertos problemas y con ellos poder adaptarlos al contexto de la aplicación. Tal es la importancia de uso de patrones de diseño que los principales ambientes de desarrollo como netbeans ya contienen plug-in’s para aplicar a diseños uml de diagramas de clases patrones de diseño.
    Una de las etapas durante el desarrollo de software en las que se debe poner mayor atención es en el diseño, ya que un sistema bien diseñado será menos propenso a fallos, además el costo que implica detectar un fallo en el sistema en el lugar de la etapa de pruebas. Ademas que si se hace una buena arquitectura y una buena estructura de objetos o clases será mucho mejor en su utilización en el futuro

    ReplyDelete
  10. Como se ha dicho, en el ámbito del desarrollo de software, siempre es importante usar lo que los patrones de diseño proponen. Estos proporcionan una estructura conocida por todos los programadores, de manera que la forma de trabajar no resulte distinta entre los mismos. Así la incorporación de un nuevo programador, no requerirá conocimiento de lo realizado anteriormente por otro. Permiten tener una estructura de código común a todos los proyectos que implemente una funcionalidad genérica. La utilización de patrones de diseño, permite ahorrar grandes cantidades de tiempo en la construcción de software. Como se puede ver en este post se logró ilustrar sobre las distintas categorías y tipos de patrones de diseño, por lo que no se debe “reinventar la rueda” en varias de nuestras aplicaciones al momento del desarrollo. Hay mucho trabajo ya realizado, testeado y aceptado que en un entorno similar a nuestro problema ya aporta una solución satisfactoria. ¿De que sirve inventar un ladrillo si ya otro lo hizo y el mismo ya fue usado exitosamente en alguna edificación?

    ReplyDelete
  11. Nos relacionamos con el mundo que nos rodea a través de cientos de interfaces de usuario. Muchas son tan conocidas y aceptadas que ni siquiera las vemos, como el picaporte de las puertas o el volante de un coche.

    La mejor interfaz es la que no se ve, sin embargo muchas de ellas, por ser nuevas, desconocidas o estar mal diseñadas, se hacen visibles.

    ¿Cuántas veces no encuentras lo que buscas en una web o no sabes cómo usar un programa, un cajero automático o un teléfono móvil? Son situaciones muy comunes resultado de un mal diseño de interfaz, que a su vez genera un problema de usabilidad.

    en nuestros proyectos de áreas debemos asegurarnos de tener una buena interfaz amigable y limpia para la interacción de los usuario

    ReplyDelete
  12. Tomando en cuenta esta información, podemos describir a los patrones de diseño como aquellos que ayudan en el desarrollo del software, donde el diseño de un mismo patrón pueda utilizarse en diversas situaciones solucionando problemas recurrentes.
    Además con los patrones de creación, los estructurales y de comportamiento, en conjunto hacen que el sistema sea independiente de cómo se representan, cómo se componen y cómo interaccionan y distribuyen las responsabilidades de los objetos.
    Así mismo puede haber la utilización de patrones adaptadores donde su finalidad es adaptar un objeto a otro para su utilización en diferentes ambientes.
    Con la implementación y adaptación de patrones de diseño se busca la disminución de tiempo en la resolución de un problema en el desarrollo de un software, sirviendo de herramienta para los programadores con la posibilidad de reutilizarse.

    Tomando en cuenta esta información, podemos describir a los patrones de diseño como aquellos que ayudan en el desarrollo del software, donde el diseño de un mismo patrón pueda utilizarse en diversas situaciones solucionando problemas recurrentes.
    Además con los patrones de creación, los estructurales y de comportamiento, en conjunto hacen que el sistema sea independiente de cómo se representan, cómo se componen y cómo interaccionan y distribuyen las responsabilidades de los objetos, añadiendo que a partir de los patrones de diseño se puede iniciar algo más complejo.
    Así mismo puede haber la utilización de patrones adaptadores donde su finalidad es adaptar un objeto a otro para su utilización en diferentes ambientes, y también lograr interfaces incompatibles trabajen juntas.
    Encontramos que con el FACADE que reduce el acceso a un conjunto de clases, así como también reduce la complejidad debido a la estructuración de un sistema, y el MEDITOR que da acceso a la variación de interacción entre objetos de manera independiente ya que evita que estos se comuniquen entre sí.

    Con la implementación y adaptación de patrones de diseño se busca la disminución de tiempo en la resolución de un problema en el desarrollo de un software, sirviendo de herramienta para los programadores con la posibilidad de reutilizarse.

    ReplyDelete
  13. Hay muchos artículos que hablan sobre los patrones de diseño en uno u otro lenguaje, pero pocos abordar problemas comunes y un motivo es porque no es un argumento en particular del lenguaje si no del diseño orientado a objetos.
    Para comprender los patrones de diseño tienes que conocer bien el paradigma orientado a objetos y tener bien definido que son y para que te sirven las interfaces y las clases abstractas. Sin esto es complicado comprender los patrones básicos y otros como los del libro de Martin Fowler entre otros. Algunos conceptos de este tipo a veces cuesta ver la aplicabilidad de dichos patrones en cuándo tienes que implementar mediante alguno de éstos o meramente por conocer cómo están implementados en los Frameworks, me gusta conocer con qué herramientas trabajo y sus potencialidades para sacarle el máximo partido. un ejemplo el caso de los Frameworks es uno de ellos ya que aprendes de los que ya pasaron por el camino antes que uno. Es amplio el tema pero se puede ir avanzando sobre la marcha comenzando por lo esencial; hacer diferentes tipos de diseño depende de cada usuario como el de patrones de creación.

    ReplyDelete
  14. Además, también es importante reseñar el concepto de "antipatrón de diseño", que con forma semejante a la de un patrón, intenta prevenir contra errores comunes de diseño en el software. La idea de los antipatrones es dar a conocer los problemas que acarrean ciertos diseños muy frecuentes, para intentar evitar que diferentes sistemas acaben una y otra vez en el mismo callejón sin salida por haber cometido los mismos errores...Como programadores seguramente nos habremos dado cuenta de que muchas veces resolvemos un mismo problema de manera diferente. Esto al principio de nuestra carrera puede ser algo positivo: experimentamos diferentes formas de enfocar un problema y podemos comparar los pros y los contras de nuestras anteriores soluciones, pero con el paso del tiempo nos gusta ir directamente al grano, y aplicar la solución más escalable, más testeable y más reutilizable...Hoy en día aprender patrones de diseño no es una cualidad más, si no una obligación. Y es que estudiar y comprender los patrones de diseño nos convierte en un mejor programador/arquitecto y es clave para conseguir una mejor posición en el mundo laboral.Es simplemente para facilitarnos la vida, pero muchas veces o no son aplicables, o la solución no se adapta al 100% a nuestros requerimientos, en dicho caso, el programador es libre de usar su creatividad y adaptar el patrón a sus especificaciones personales...Existen muchos patrones como ya se ha mencionado en este post, lo importante es saber que existen y preocuparnos por entenderlos y usarlos. De esta manera, podremos convertirnos en profesionales del mundo de la programación. En un mundo ideal todo programador debería aprender la sintaxis de la programación y luego los patrones de diseño.

    ReplyDelete
  15. Crear patrones de diseño representa una de las mejores prácticas utilizadas por desarrolladores experimentados de software orientado a objetos. Son soluciones a los problemas generales que enfrentan los desarrolladores durante la creación del software. Estas soluciones fueron obtenidas por ensayo y error por numerosos desarrolladores de software durante un período de tiempo bastante considerable. Crear patrones de diseño otorga una buena referencia para los programadores a la hora de escribir lineas de código, ayudando bastante bien al desarrollador a evitar errores o incongruencias en sus lineas de código y a manejarse de una manera mas ordenada.

    Es bastante importante que los patrones diseñados esten revisados correctamente y bien estructurados ya que existen casos en los que los desarrolladores no los tienen bien establecidos, lo cual genera problemas o errores a la hora de ir a la escritura de la aplicación como tal. Existen "Programadores" que prefieren trabajar sobre la marcha y no establecen ningún tipo de patrón, lo que genera que se encuentren en oportunidades que no logran salir de los problemas generados por ensayo. Un buen patrón o mapa del diseño que se va a realizar corrige todas estas posibilidades y reduce el rango de error en el tiempo de programar o escribir como tal, es por esto, que debemos divulgar o impulsar la aplicación o creación de patrones de diseño para que impulsemos el crecimiento eficiente en el ámbito de desarrollo de aplicaciones y tecnológico como tal en el pais.

    ReplyDelete
  16. Hablar sobre patrones de diseño es hacer referencia a cambios de manera autónoma o independiente y que aun así de esta manera no se vea afectado entonces las otras partes del sistema. Siendo una parte de suma importancia la cual requiere bastante atención el diseño en el desarrollo de software; se contempla que si existe un sistema bien diseñado este será menos vulnerable a fallos por ejemplo. Estos patrones entonces nos conceden que nuestro sistema sea tanto flexible como recusables lo que hace que a la hora de resolver alguna situación problemática en dicho sistema al desarrollador se le torne más sencillo. Es conveniente saber que este patrón es bastante fácil de amoldar en cualquier entorno.

    ReplyDelete
  17. Todos los desarrolladores se esfuerzan por escribir código mantenible, legible y reutilizable. La estructuración de código se vuelve más importante a medida que las aplicaciones se vuelven más grandes. Los patrones de diseño resultan cruciales para resolver este desafío, proporcionando una estructura de organización para problemas comunes en una circunstancia particular. Éstos se utilizan con frecuencia en aplicaciones más grandes, aunque para entender dónde uno puede ser ventajoso sobre otro, viene con la práctica. Antes de compilar cualquier aplicación, debe pensar detenidamente sobre cada actor y cómo interactúan entre sí para tener un norte de lo que queremos hacer, y al desarrollar, se optimice el tiempo y los recursos necesarios para elaborar el software que el usuario requiere.

    ReplyDelete
  18. Los patrones proporcionan un mecanismo para representar el asesoramiento de diseño en un formato de referencia. Diseño de software es un tema masivo, y cuando se enfrenta con un problema de diseño, debe ser capaz de centrarse en algo tan cerca del problema como usted puede conseguir.
    El código que emplea patrones de diseño es fácil de entender, mantener y extender.
    La facade es muy similar a los patrones del adaptador y del decorador. El adaptador actúa como un puente entre dos interfaces que no son compatibles, mientras que el decorador es más complejo y se utiliza para cambiar dinámicamente la forma en que se comportan los objetos.

    ReplyDelete