SlideShare una empresa de Scribd logo
1 de 30
Patrones de Diseño Sergio David Fernández
Definición “Los patrones de diseño son el esqueleto de las soluciones a problemas comunes en el desarrollo de software.” “Son soluciones simples y elegantes a problemas específicos y comunes del diseño orientado a objetos. Son soluciones basadas en la experiencia y que se ha demostrado que funcionan.” En otras palabras, brindan una solución ya probada y documentada a problemas de desarrollo de software que están sujetos a contextos similares.
Objetivos Los patrones de diseño pretenden: Proporcionar catálogos de elementos reusables en el diseño de sistemas software. Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente. Formalizar un vocabulario común entre diseñadores. Estandarizar el modo en que se realiza el diseño. Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente.
Clasificación Patrones Creacionales: Inicialización y configuración de objetos. Patrones Estructurales: Separan la interfaz de la implementación. Se ocupan de cómo las clases y objetos se agrupan, para formar estructuras más grandes. Patrones de Comportamiento: Más que describir objetos o clases, describen la comunicación entre ellos.
Patrones Creacionales
Patrones Estructurales
Patrones de Comportamiento
Patrones Creacionales Abstraen el proceso de instanciación. Hacen al sistema independiente de las creaciones de objetos. Encapsulan conocimiento sobre las clases concretas usadas por el sistema. Ocultan la forma en que se crean y ponen en contacto las instancias. No son siempre excluyentes: a veces complementarios.
Singleton (Instancia Única) Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella. Todos los objetos que utilizan una instancia de una Clase Singleton utilizan la misma instancia.
Singleton (Instancia Única) Se implementa creando en nuestra clase un método que crea una instancia del objeto sólo si todavía no existe alguna. Para asegurar que la clase no puede ser instanciada nuevamente se regula el alcance del constructor (con atributos como protegido o privado).
Singleton (Instancia Única) Ventajas: Una clase Singleton puede controlar cómo y cuando el código cliente puede acceder a la única instancia. El código cliente no tiene la libertad de utilizar el operador new para crear instancias de la clase Singleton. En vez de eso, debe llamar a un método estático que regresa una referencia a la única instancia. Una clase Singleton puede ser modificada fácilmente si los requerimientos cambian y la aplicación necesita limitar el número de instancias a un número diferente de uno.
Object Pool (Conjunto de Objetos) El ObjectPooling (Agrupación de objetos), puede ofrecer un significativo aumento del rendimiento. Es eficaz en situaciones donde el costo de la inicialización de una instancia es alto, la tasa de creación de instancias es alta, y el número de instancias en uso en cualquier momento es bajo.
Object Pool (Conjunto de Objetos) Object Pools se utilizan para gestionar el almacenamiento en caché de objetos.  Un cliente con acceso a un ObjectPool puede evitar la creación de nuevos objetos, simplemente preguntando al Pool por un uno que ya se ha instanciado. El manejo del Object Pool debe ser diseñado para ser una Clase Singleton, con el fin de que el Object Pool se encargue del manejo de los objetos.
Object Pool (Conjunto de Objetos) El funcionamiento es el siguiente: El Object Pool deja que se utilicen (checkout) objetos del Pool. Cuando no son más utilizados por el proceso que hizo el checkout, éstos son devueltos al Pool, con el fin de ser reutilizados. El Object Pool también instancia nuevos objetos cuando son requeridos (objetos se encuentran en uso), pero debe implementar una forma sencilla de limpiar objetos sin usar.
Builder (Constructor Virtual) Separa la construcción de un objeto complejo de su representación, de forma que el mismo proceso de construcción pueda crear diferentes representaciones.
Builder interfaz abstracta para crear productos. Concrete Builder implementación del Builder construye y reúne las partes necesarias para construir los productos Director construye un objeto usando el patrón Builder Producto El objeto complejo bajo construcción
Builder (Constructor Virtual) Ventajas Reduce el acoplamiento. Permite variar la representación interna de estructuras compleja, respetando la interfaz común de la clase Builder. Se independiza el código de construcción de la representación. Las clases concretas que tratan las representaciones internas no forman parte de la interfaz del Builder. Cada ConcreteBuilder tiene el código especifico para crear y modificar una estructura interna concreta.  Distintos Director con distintas utilidades (visores, parsers, etc) pueden utilizar el mismo ConcreteBuilder. Permite un mayor control en el proceso de creación del objeto. El Director controla la creación paso a paso, solo cuando el Builder ha terminado de construir el objeto lo recupera el Director.
Builder (Constructor Virtual) Se debe usar cuando: El algoritmo para la creación de un objeto complejo debe ser independiente de las partes que conforman el objeto y cómo está montado. El proceso de construcción debe permitir diferentes representaciones del objeto que es construido.
FactoryMethod (Método de Fabricación) Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase instanciar. Permite que una clase delegue en sus subclases la creación de objetos.
FactoryMethod (Método de Fabricación) Consiste en utilizar una clase constructora abstracta con unos cuantos métodos definidos y otro(s) abstracto(s): el dedicado a la construcción de objetos de un subtipo de un tipo determinado. Es una simplificación del AbstractFactory, en la que la clase abstracta tiene métodos concretos que usan algunos de los abstractos; según usemos una u otra hija de esta clase abstracta, tendremos uno u otro comportamiento.
Las clases principales en este patrón son el creador y el producto. El creador necesita crear instancias de productos, pero el tipo concreto de producto no debe ser forzado en las subclases del creador, porque entonces las posibles subclases del creador deben poder especificar subclases del producto para utilizar. La solución para esto es hacer un método abstracto (el método de la fábrica) que se define en el creador. Este método abstracto se define para que devuelva un producto. Las subclases del creador pueden sobrescribir este método para devolver subclases apropiadas del producto.
AbstractFactory (Fabrica Abstracta) Toma el mismo concepto de FactoryMethod pero al próximo nivel. En términos simples, un AbstractFactory es una clase que provee una interfaz para producir una familia de objetos relacionados o que dependen entre sí, sin especificar sus clases concretas. Se usa cuando se quiere retornar una de varias clases de objetos relacionados, cada uno de los cuales puede retornar varios diferentes objetos
AbstractFactory (Fabrica Abstracta) Está aconsejado cuando se prevé la inclusión de nuevas familias de productos, pero puede resultar contraproducente cuando se añaden nuevos productos o cambian los existentes, puesto que afectaría a todas las familias creadas.
AbstractFactory (Fabrica Abstracta)
AbstractFactory (Fabrica Abstracta) Cliente: La clase que llamará a la factoría adecuada ya que necesita crear uno de los objetos que provee la factoría, es decir, Cliente lo que quiere es obtener una instancia de alguno de los productos (ProductoA, ProductoB). AbstractFactory: Es de definición de la interfaces de las factorías. Debe de proveer un método para la obtención de cada objeto que pueda crear. ("crearProductoA()" y "crearProductoB()") Factorías Concretas: Estas son las diferentes familias de productos. Provee de la instancia concreta de la que se encarga de crear. De esta forma podemos tener una factoría que cree los elementos gráficos para Windows y otra que los cree para Linux, pudiendo poner fácilmente (creando una nueva) otra que los cree para MacOS, por ejemplo. Producto abstracto: Definición de las interfaces para la familia de productos genéricos. En el diagrama son "ProductoA" y "ProductoB". En un ejemplo de interfaces gráficas podrían ser todos los elementos: Botón, Ventana, Cuadro de Texto, Combo... El cliente trabajará directamente sobre esta interfaz, que será implementada por los diferentes productos concretos. Producto concreto: Implementación de los diferentes productos. Podría ser por ejemplo "BotónWindows" y "BotónLinux". Como ambos implementan "Botón" el cliente no sabrá si está en Windows o Linux, puesto que trabajará directamente sobre la superclase o interfaz.
Prototype (Prototipo) Tiene como finalidad crear nuevos objetos duplicándolos, clonando una instancia creada previamente. Este patrón especifica la clase de objetos a crear mediante la clonación de un prototipo que es una instancia ya creada. La clase de los objetos que servirán de prototipo deberá incluir en su interfaz la manera de solicitar una copia, que será desarrollada luego por las clases concretas de prototipos.
Prototype (Prototipo) La aplicación necesitará crear nuevos objetos a partir de modelos. Estos modelos, o prototipos, son clonados y el nuevo objeto será una copia exacta de los mismos, con el mismo estado.
Cliente: Es el encargado de solicitar la creación de los nuevos objetos a partir de los prototipos. Prototipo Concreto: Posee una características concretas que serán reproducidas para nuevos objetos e implementa una operación para clonarse. Prototipo: Declara una interfaz para clonarse, a la que accede el cliente.
Bibliografía Qué es un patrón de diseño? http://msdn.microsoft.com/es-es/library/bb972240.aspx Patrón de diseño http://es.wikipedia.org/wiki/Patrón_de_diseño Object Pool DesignPatternhttp://sourcemaking.com/design_patterns/object_pool Patrones de diseño http://www.ingenierosoftware.com/analisisydiseno/patrones-diseno.php Builder – DesignPattern – GoFhttp://www.slideshare.net/jlrvpuma/builder-design-pattern-gof Builder (Patrón de diseño) http://es.wikipedia.org/wiki/Builder_(patr%C3%B3n_de_dise%C3%B1o)
Bibliografía Singletonhttp://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o_Singleton Patrón de diseño Singletonhttp://www.slideshare.net/lcahuich/2-3-5-patron-de-diseo-singular-singleton Patrones Creacionales http://www.slideshare.net/faustol/patrones-creacionales FactoryMethod (Patrón de diseño) http://es.wikipedia.org/wiki/Factory_Method_(patr%C3%B3n_de_dise%C3%B1o) AbstractFactoryhttp://www.slideshare.net/dialheca/abstract-factory AbstractFactory (Patrón de diseño) http://es.wikipedia.org/wiki/Abstract_Factory_(patr%C3%B3n_de_dise%C3%B1o)

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

diagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemadiagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistema
 
Arquitectura Orientada a Servicios
Arquitectura Orientada a ServiciosArquitectura Orientada a Servicios
Arquitectura Orientada a Servicios
 
Diagrama de Componentes
Diagrama de ComponentesDiagrama de Componentes
Diagrama de Componentes
 
Proceso del software
Proceso del softwareProceso del software
Proceso del software
 
Caracteristicas rup
Caracteristicas rupCaracteristicas rup
Caracteristicas rup
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 
Abstract factory
Abstract factoryAbstract factory
Abstract factory
 
Modelo 4+1
Modelo 4+1Modelo 4+1
Modelo 4+1
 
Diagramas UML
Diagramas UMLDiagramas UML
Diagramas UML
 
Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascada
 
Patrones comportamiento
Patrones comportamientoPatrones comportamiento
Patrones comportamiento
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
 
Modelo 4+1
Modelo 4+1Modelo 4+1
Modelo 4+1
 
Modelamiento De Negocio
Modelamiento De NegocioModelamiento De Negocio
Modelamiento De Negocio
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2
 
Metodología orientada a objetos
Metodología orientada a objetosMetodología orientada a objetos
Metodología orientada a objetos
 

Destacado

Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoGermania Rodriguez
 
Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de DiseñoMario Cabrera
 
Patrón Decorator
Patrón DecoratorPatrón Decorator
Patrón DecoratorAutentia
 
Design Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoDesign Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoAutentia
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón FaçadeAutentia
 
Presentación open closed principle
Presentación open closed principlePresentación open closed principle
Presentación open closed principleAutentia
 
Measuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgMeasuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgAutentia
 
Patrón Observer
Patrón ObserverPatrón Observer
Patrón ObserverAutentia
 
Nativescript
NativescriptNativescript
NativescriptAutentia
 
Factory method
Factory methodFactory method
Factory methodAutentia
 
Introducción a los patrones de diseño
Introducción a los patrones de diseñoIntroducción a los patrones de diseño
Introducción a los patrones de diseñoMario Solarte
 
Patrones de diseño: Polimorfismo
Patrones de diseño: PolimorfismoPatrones de diseño: Polimorfismo
Patrones de diseño: PolimorfismoAutentia
 
Introducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareIntroducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareYazmin RuBo
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado2008PA2Info3
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoFYaskelly Yedra
 
Libros 6 8 años
Libros 6 8 añosLibros 6 8 años
Libros 6 8 añosdgalmor783
 

Destacado (20)

Patrones Creacionales
Patrones CreacionalesPatrones Creacionales
Patrones Creacionales
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de Diseño
 
Patrón Decorator
Patrón DecoratorPatrón Decorator
Patrón Decorator
 
Design Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoDesign Patterns / Patrones de Diseño
Design Patterns / Patrones de Diseño
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón Façade
 
Presentación open closed principle
Presentación open closed principlePresentación open closed principle
Presentación open closed principle
 
Measuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgMeasuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezg
 
Patrón Observer
Patrón ObserverPatrón Observer
Patrón Observer
 
Nativescript
NativescriptNativescript
Nativescript
 
Factory method
Factory methodFactory method
Factory method
 
Singleton
SingletonSingleton
Singleton
 
Introducción a los patrones de diseño
Introducción a los patrones de diseñoIntroducción a los patrones de diseño
Introducción a los patrones de diseño
 
Patrones de diseño: Polimorfismo
Patrones de diseño: PolimorfismoPatrones de diseño: Polimorfismo
Patrones de diseño: Polimorfismo
 
Introducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareIntroducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de software
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
 
Patrones diseño de software
Patrones diseño de softwarePatrones diseño de software
Patrones diseño de software
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
 
Libros 6 8 años
Libros 6 8 añosLibros 6 8 años
Libros 6 8 años
 

Similar a Presentacion Patrones Creacionales

Abstract factory. presentación
Abstract factory. presentaciónAbstract factory. presentación
Abstract factory. presentaciónavidal020
 
Abstract factory. presentación
Abstract factory. presentaciónAbstract factory. presentación
Abstract factory. presentaciónavidal020
 
Abstract Factory -Design Pattern - GoF
Abstract Factory -Design Pattern - GoFAbstract Factory -Design Pattern - GoF
Abstract Factory -Design Pattern - GoFjlrvpuma
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo2008PA2Info3
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo2008PA2Info3
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañanaale abad aguilar
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseñoIsrael Rey
 
Msdn Webcast InyeccióN De Dependencias Con Spring Framework
Msdn Webcast   InyeccióN De Dependencias Con Spring FrameworkMsdn Webcast   InyeccióN De Dependencias Con Spring Framework
Msdn Webcast InyeccióN De Dependencias Con Spring FrameworkGabriel Oliva
 
Taller patrones de diseño
Taller patrones de  diseñoTaller patrones de  diseño
Taller patrones de diseñotovar1982
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseñoJuanes Alzt
 
Instituto tecnológico de tijuana
Instituto tecnológico de tijuanaInstituto tecnológico de tijuana
Instituto tecnológico de tijuanajavier
 

Similar a Presentacion Patrones Creacionales (20)

Abstract factory. presentación
Abstract factory. presentaciónAbstract factory. presentación
Abstract factory. presentación
 
Abstract Factory
Abstract FactoryAbstract Factory
Abstract Factory
 
Patrones
PatronesPatrones
Patrones
 
Abstract factory. presentación
Abstract factory. presentaciónAbstract factory. presentación
Abstract factory. presentación
 
Abstract Factory -Design Pattern - GoF
Abstract Factory -Design Pattern - GoFAbstract Factory -Design Pattern - GoF
Abstract Factory -Design Pattern - GoF
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo
 
Transparencias_Patrones.ppt
Transparencias_Patrones.pptTransparencias_Patrones.ppt
Transparencias_Patrones.ppt
 
Patrones de diseño - Henry Vallejo
Patrones de diseño - Henry VallejoPatrones de diseño - Henry Vallejo
Patrones de diseño - Henry Vallejo
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Patron de diseño
Patron de diseñoPatron de diseño
Patron de diseño
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Vn-Desarrollo
Vn-DesarrolloVn-Desarrollo
Vn-Desarrollo
 
Msdn Webcast InyeccióN De Dependencias Con Spring Framework
Msdn Webcast   InyeccióN De Dependencias Con Spring FrameworkMsdn Webcast   InyeccióN De Dependencias Con Spring Framework
Msdn Webcast InyeccióN De Dependencias Con Spring Framework
 
Taller patrones de diseño
Taller patrones de  diseñoTaller patrones de  diseño
Taller patrones de diseño
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Instituto tecnológico de tijuana
Instituto tecnológico de tijuanaInstituto tecnológico de tijuana
Instituto tecnológico de tijuana
 
Patron creacional singleton
Patron creacional singletonPatron creacional singleton
Patron creacional singleton
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
 
Trabajo de programacion
Trabajo de programacionTrabajo de programacion
Trabajo de programacion
 

Último

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 

Último (16)

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 

Presentacion Patrones Creacionales

  • 1. Patrones de Diseño Sergio David Fernández
  • 2. Definición “Los patrones de diseño son el esqueleto de las soluciones a problemas comunes en el desarrollo de software.” “Son soluciones simples y elegantes a problemas específicos y comunes del diseño orientado a objetos. Son soluciones basadas en la experiencia y que se ha demostrado que funcionan.” En otras palabras, brindan una solución ya probada y documentada a problemas de desarrollo de software que están sujetos a contextos similares.
  • 3. Objetivos Los patrones de diseño pretenden: Proporcionar catálogos de elementos reusables en el diseño de sistemas software. Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente. Formalizar un vocabulario común entre diseñadores. Estandarizar el modo en que se realiza el diseño. Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente.
  • 4. Clasificación Patrones Creacionales: Inicialización y configuración de objetos. Patrones Estructurales: Separan la interfaz de la implementación. Se ocupan de cómo las clases y objetos se agrupan, para formar estructuras más grandes. Patrones de Comportamiento: Más que describir objetos o clases, describen la comunicación entre ellos.
  • 8. Patrones Creacionales Abstraen el proceso de instanciación. Hacen al sistema independiente de las creaciones de objetos. Encapsulan conocimiento sobre las clases concretas usadas por el sistema. Ocultan la forma en que se crean y ponen en contacto las instancias. No son siempre excluyentes: a veces complementarios.
  • 9. Singleton (Instancia Única) Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella. Todos los objetos que utilizan una instancia de una Clase Singleton utilizan la misma instancia.
  • 10. Singleton (Instancia Única) Se implementa creando en nuestra clase un método que crea una instancia del objeto sólo si todavía no existe alguna. Para asegurar que la clase no puede ser instanciada nuevamente se regula el alcance del constructor (con atributos como protegido o privado).
  • 11. Singleton (Instancia Única) Ventajas: Una clase Singleton puede controlar cómo y cuando el código cliente puede acceder a la única instancia. El código cliente no tiene la libertad de utilizar el operador new para crear instancias de la clase Singleton. En vez de eso, debe llamar a un método estático que regresa una referencia a la única instancia. Una clase Singleton puede ser modificada fácilmente si los requerimientos cambian y la aplicación necesita limitar el número de instancias a un número diferente de uno.
  • 12. Object Pool (Conjunto de Objetos) El ObjectPooling (Agrupación de objetos), puede ofrecer un significativo aumento del rendimiento. Es eficaz en situaciones donde el costo de la inicialización de una instancia es alto, la tasa de creación de instancias es alta, y el número de instancias en uso en cualquier momento es bajo.
  • 13. Object Pool (Conjunto de Objetos) Object Pools se utilizan para gestionar el almacenamiento en caché de objetos. Un cliente con acceso a un ObjectPool puede evitar la creación de nuevos objetos, simplemente preguntando al Pool por un uno que ya se ha instanciado. El manejo del Object Pool debe ser diseñado para ser una Clase Singleton, con el fin de que el Object Pool se encargue del manejo de los objetos.
  • 14. Object Pool (Conjunto de Objetos) El funcionamiento es el siguiente: El Object Pool deja que se utilicen (checkout) objetos del Pool. Cuando no son más utilizados por el proceso que hizo el checkout, éstos son devueltos al Pool, con el fin de ser reutilizados. El Object Pool también instancia nuevos objetos cuando son requeridos (objetos se encuentran en uso), pero debe implementar una forma sencilla de limpiar objetos sin usar.
  • 15. Builder (Constructor Virtual) Separa la construcción de un objeto complejo de su representación, de forma que el mismo proceso de construcción pueda crear diferentes representaciones.
  • 16. Builder interfaz abstracta para crear productos. Concrete Builder implementación del Builder construye y reúne las partes necesarias para construir los productos Director construye un objeto usando el patrón Builder Producto El objeto complejo bajo construcción
  • 17. Builder (Constructor Virtual) Ventajas Reduce el acoplamiento. Permite variar la representación interna de estructuras compleja, respetando la interfaz común de la clase Builder. Se independiza el código de construcción de la representación. Las clases concretas que tratan las representaciones internas no forman parte de la interfaz del Builder. Cada ConcreteBuilder tiene el código especifico para crear y modificar una estructura interna concreta. Distintos Director con distintas utilidades (visores, parsers, etc) pueden utilizar el mismo ConcreteBuilder. Permite un mayor control en el proceso de creación del objeto. El Director controla la creación paso a paso, solo cuando el Builder ha terminado de construir el objeto lo recupera el Director.
  • 18. Builder (Constructor Virtual) Se debe usar cuando: El algoritmo para la creación de un objeto complejo debe ser independiente de las partes que conforman el objeto y cómo está montado. El proceso de construcción debe permitir diferentes representaciones del objeto que es construido.
  • 19. FactoryMethod (Método de Fabricación) Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase instanciar. Permite que una clase delegue en sus subclases la creación de objetos.
  • 20. FactoryMethod (Método de Fabricación) Consiste en utilizar una clase constructora abstracta con unos cuantos métodos definidos y otro(s) abstracto(s): el dedicado a la construcción de objetos de un subtipo de un tipo determinado. Es una simplificación del AbstractFactory, en la que la clase abstracta tiene métodos concretos que usan algunos de los abstractos; según usemos una u otra hija de esta clase abstracta, tendremos uno u otro comportamiento.
  • 21. Las clases principales en este patrón son el creador y el producto. El creador necesita crear instancias de productos, pero el tipo concreto de producto no debe ser forzado en las subclases del creador, porque entonces las posibles subclases del creador deben poder especificar subclases del producto para utilizar. La solución para esto es hacer un método abstracto (el método de la fábrica) que se define en el creador. Este método abstracto se define para que devuelva un producto. Las subclases del creador pueden sobrescribir este método para devolver subclases apropiadas del producto.
  • 22. AbstractFactory (Fabrica Abstracta) Toma el mismo concepto de FactoryMethod pero al próximo nivel. En términos simples, un AbstractFactory es una clase que provee una interfaz para producir una familia de objetos relacionados o que dependen entre sí, sin especificar sus clases concretas. Se usa cuando se quiere retornar una de varias clases de objetos relacionados, cada uno de los cuales puede retornar varios diferentes objetos
  • 23. AbstractFactory (Fabrica Abstracta) Está aconsejado cuando se prevé la inclusión de nuevas familias de productos, pero puede resultar contraproducente cuando se añaden nuevos productos o cambian los existentes, puesto que afectaría a todas las familias creadas.
  • 25. AbstractFactory (Fabrica Abstracta) Cliente: La clase que llamará a la factoría adecuada ya que necesita crear uno de los objetos que provee la factoría, es decir, Cliente lo que quiere es obtener una instancia de alguno de los productos (ProductoA, ProductoB). AbstractFactory: Es de definición de la interfaces de las factorías. Debe de proveer un método para la obtención de cada objeto que pueda crear. ("crearProductoA()" y "crearProductoB()") Factorías Concretas: Estas son las diferentes familias de productos. Provee de la instancia concreta de la que se encarga de crear. De esta forma podemos tener una factoría que cree los elementos gráficos para Windows y otra que los cree para Linux, pudiendo poner fácilmente (creando una nueva) otra que los cree para MacOS, por ejemplo. Producto abstracto: Definición de las interfaces para la familia de productos genéricos. En el diagrama son "ProductoA" y "ProductoB". En un ejemplo de interfaces gráficas podrían ser todos los elementos: Botón, Ventana, Cuadro de Texto, Combo... El cliente trabajará directamente sobre esta interfaz, que será implementada por los diferentes productos concretos. Producto concreto: Implementación de los diferentes productos. Podría ser por ejemplo "BotónWindows" y "BotónLinux". Como ambos implementan "Botón" el cliente no sabrá si está en Windows o Linux, puesto que trabajará directamente sobre la superclase o interfaz.
  • 26. Prototype (Prototipo) Tiene como finalidad crear nuevos objetos duplicándolos, clonando una instancia creada previamente. Este patrón especifica la clase de objetos a crear mediante la clonación de un prototipo que es una instancia ya creada. La clase de los objetos que servirán de prototipo deberá incluir en su interfaz la manera de solicitar una copia, que será desarrollada luego por las clases concretas de prototipos.
  • 27. Prototype (Prototipo) La aplicación necesitará crear nuevos objetos a partir de modelos. Estos modelos, o prototipos, son clonados y el nuevo objeto será una copia exacta de los mismos, con el mismo estado.
  • 28. Cliente: Es el encargado de solicitar la creación de los nuevos objetos a partir de los prototipos. Prototipo Concreto: Posee una características concretas que serán reproducidas para nuevos objetos e implementa una operación para clonarse. Prototipo: Declara una interfaz para clonarse, a la que accede el cliente.
  • 29. Bibliografía Qué es un patrón de diseño? http://msdn.microsoft.com/es-es/library/bb972240.aspx Patrón de diseño http://es.wikipedia.org/wiki/Patrón_de_diseño Object Pool DesignPatternhttp://sourcemaking.com/design_patterns/object_pool Patrones de diseño http://www.ingenierosoftware.com/analisisydiseno/patrones-diseno.php Builder – DesignPattern – GoFhttp://www.slideshare.net/jlrvpuma/builder-design-pattern-gof Builder (Patrón de diseño) http://es.wikipedia.org/wiki/Builder_(patr%C3%B3n_de_dise%C3%B1o)
  • 30. Bibliografía Singletonhttp://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o_Singleton Patrón de diseño Singletonhttp://www.slideshare.net/lcahuich/2-3-5-patron-de-diseo-singular-singleton Patrones Creacionales http://www.slideshare.net/faustol/patrones-creacionales FactoryMethod (Patrón de diseño) http://es.wikipedia.org/wiki/Factory_Method_(patr%C3%B3n_de_dise%C3%B1o) AbstractFactoryhttp://www.slideshare.net/dialheca/abstract-factory AbstractFactory (Patrón de diseño) http://es.wikipedia.org/wiki/Abstract_Factory_(patr%C3%B3n_de_dise%C3%B1o)