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 (20)

Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
 
modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Rational rose
Rational roseRational rose
Rational rose
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
 
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 RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Requerimientos no funcionales
Requerimientos no funcionalesRequerimientos no funcionales
Requerimientos no funcionales
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Ejemplo
EjemploEjemplo
Ejemplo
 
Metodologia msf
Metodologia msfMetodologia msf
Metodologia msf
 
IDEs y Frameworks mas utilizados
IDEs y Frameworks mas utilizadosIDEs y Frameworks mas utilizados
IDEs y Frameworks mas utilizados
 
Metodologia del rup
Metodologia del rupMetodologia del rup
Metodologia del rup
 
Modelado, Ingenieria de Software
Modelado, Ingenieria de SoftwareModelado, Ingenieria de Software
Modelado, Ingenieria de Software
 
2. El proceso del software
2. El proceso del software2. El proceso del software
2. El proceso del software
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
Patrones Creacionales
Patrones CreacionalesPatrones Creacionales
Patrones Creacionales
 
Clase 1- Enfoque Orientado a Objeto.pptx
Clase 1- Enfoque Orientado a Objeto.pptxClase 1- Enfoque Orientado a Objeto.pptx
Clase 1- Enfoque Orientado a Objeto.pptx
 
Diagramas de estados
Diagramas de estadosDiagramas de estados
Diagramas de estados
 

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
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructuralesAutentia
 
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 I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 
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
 
Libros 6 8 años
Libros 6 8 añosLibros 6 8 años
Libros 6 8 añosdgalmor783
 

Destacado (20)

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
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
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
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
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
 
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
 
Abstract factory
Abstract factoryAbstract factory
Abstract factory
 
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
 

Último

TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 

Último (20)

TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 

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)