Sunteți pe pagina 1din 12

INSTITUTO TECNOLOGICO SUPERIOR DE

ARANDAS



ALUMNO
ALEJANDRO ESCOTO CAMACHO


INGENIERIA DE SOFTWARE

DOCENTE
JULIO ARELLANO



PATRONES DE DISEO


CONCEPTO

Los patrones de diseo son la base para la bsqueda de soluciones a problemas comunes en
el desarrollo de software y otros mbitos referentes al diseo de interaccin o interfaces.
Un patrn de diseo resulta ser una solucin a un problema de diseo. Para que una solucin
sea considerada un patrn debe poseer ciertas caractersticas. Una de ellas es que debe
haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores.
Otra es que debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de
diseo en distintas circunstancias.

OBJETIVOS
Los patrones de diseo pretenden:
Proporcionar catlogos de elementos reusables en el diseo de sistemas software.
Evitar la reiteracin en la bsqueda de soluciones a problemas ya conocidos y
solucionados anteriormente.
Formalizar un vocabulario comn entre diseadores.
Estandarizar el modo en que se realiza el diseo.
Facilitar el aprendizaje de las nuevas generaciones de diseadores condensando
conocimiento ya existente.

CATEGORIA DE PATRONES
Segn la escala o nivel de abstraccin:
Patrones de arquitectura: Aquellos que expresan un esquema organizativo estructural
fundamental para sistemas de software.
Patrones de diseo: Aquellos que expresan esquemas para definir estructuras de diseo
(o sus relaciones) con las que construir sistemas de software.
Dialectos: Patrones de bajo nivel especficos para un lenguaje de programacin o entorno
concreto.

Patrones creacionales
Corresponden a patrones de diseo software que solucionan problemas de creacin de
instancias. Nos ayudan a encapsular y abstraer dicha creacin:

Object Pool (no pertenece a los patrones especificados por GoF): se obtienen objetos
nuevos a travs de la clonacin. Utilizado cuando el costo de crear una clase es mayor
que el de clonarla. Especialmente con objetos muy complejos. Se especifica un tipo de
objeto a crear y se utiliza una interfaz del prototipo para crear un nuevo objeto por
clonacin. El proceso de clonacin se inicia instanciando un tipo de objeto de la clase que
queremos clonar.

Abstract Factory (fbrica abstracta): permite trabajar con objetos de distintas familias de
manera que las familias no se mezclen entre s y haciendo transparente el tipo de familia
concreta que se est usando. El problema a solucionar por este patrn es el de crear
diferentes familias de objetos, como por ejemplo la creacin de interfaces grficas de
distintos tipos (ventana, men, botn, etc.).

Builder (constructor virtual): abstrae el proceso de creacin de un objeto complejo,
centralizando dicho proceso en un nico punto.

Factory Method (mtodo de fabricacin): centraliza en una clase constructora la creacin
de objetos de un subtipo de un tipo determinado, ocultando al usuario la casustica, es
decir, la diversidad de casos particulares que se pueden prever, para elegir el subtipo que
crear. Parte del principio de que las subclases determinan la clase a implementar.



ejemplo de este patrn:
class ConcreteCreator extends Creator{
protected Product FactoryMethod(){
return new ConcreteProduct();
}
}

interface Product{...}

class ConcreteProduct implements Product{...}

public class Client{
public static void main(String args[])
{
Creator UnCreator;
UnCreator = new ConcreteCreator();
UnCreator.AnOperations();
}
}


Patrones estructurales
Son los patrones de diseo software que solucionan problemas de composicin (agregacin)
de clases y objetos:
Adapter o Wrapper (Adaptador o Envoltorio): Adapta una interfaz para que pueda ser
utilizada por una clase que de otro modo no podra utilizarla.
Bridge (Puente): Desacopla una abstraccin de su implementacin.
Composite (Objeto compuesto): Permite tratar objetos compuestos como si de uno simple
se tratase.
Decorator (Decorador): Aade funcionalidad a una clase dinmicamente.
Facade (Fachada): Provee de una interfaz unificada simple para acceder a una interfaz o
grupo de interfaces de un subsistema.
Flyweight (Peso ligero): Reduce la redundancia cuando gran cantidad de objetos poseen
idntica informacin.


Proxy: Mantiene un representante de un objeto.
Mdulo: Agrupa varios elementos relacionados, como clases, singletons, y mtodos,
utilizados globalmente, en una entidad nica.


Patrones de comportamiento
Se definen como patrones de diseo software que ofrecen soluciones respecto a la interaccin
y responsabilidades entre clases y objetos, as como los algoritmos que encapsulan:
Chain of Responsibility (Cadena de responsabilidad): Permite establecer la lnea que
deben llevar los mensajes para que los objetos realicen la tarea indicada.
Command (Orden): Encapsula una operacin en un objeto, permitiendo ejecutar dicha
operacin sin necesidad de conocer el contenido de la misma.
Interpreter (Intrprete): Dado un lenguaje, define una gramtica para dicho lenguaje, as
como las herramientas necesarias para interpretarlo.
Iterator (Iterador): Permite realizar recorridos sobre objetos compuestos
independientemente de la implementacin de estos.
Mediator (Mediador): Define un objeto que coordine la comunicacin entre objetos de
distintas clases, pero que funcionan como un conjunto.
Memento (Recuerdo): Permite volver a estados anteriores del sistema.
Observer (Observador): Define una dependencia de uno-a-muchos entre objetos, de
forma que cuando un objeto cambie de estado se notifique y actualicen automticamente
todos los objetos que dependen de l.
State (Estado): Permite que un objeto modifique su comportamiento cada vez que cambie
su estado interno.
Strategy (Estrategia): Permite disponer de varios mtodos para resolver un problema y
elegir cul utilizar en tiempo de ejecucin.
Template Method (Mtodo plantilla): Define en una operacin el esqueleto de un
algoritmo, delegando en las subclases algunos de sus pasos, esto permite que las
subclases redefinan ciertos pasos de un algoritmo sin cambiar su estructura.
Visitor (Visitante): Permite definir nuevas operaciones sobre una jerarqua de clases sin
modificar las clases sobre las que opera.
Aplicacin en mbitos concretos
Adems de su aplicacin directa en la construccin de software en general, y derivado
precisamente del gran xito que han tenido, los patrones de diseo han sido aplicados a
mltiples mbitos concretos producindose "lenguajes de patrones" y extensos "catlogos" de
la mano de diversos autores.
En particular son notorios los esfuerzos en los siguientes mbitos:
Patrones de interfaces de usuario, esto es, aquellos que intentan definir las mejores
formas de construir interfaces hombre-mquina (vase Interaccin persona-
computador,Interfaz grfica de usuario).
Patrones para la construccin de sistemas empresariales, en donde se requieren
especiales esfuerzos en infraestructuras de software y un nivel de abstraccin importante
para maximizar factores como la escalabilidad o el mantenimiento del sistema.
Patrones para la integracin de sistemas (vase Integracin de aplicaciones
empresariales), es decir, para la intercomunicacin y coordinacin de sistemas
heterogneos.
Patrones de flujos de trabajo, esto es para la definicin, construccin e integracin de
sistemas abstractos de gestin de flujos de trabajo y procesos con sistemas
empresariales.








EJEMPLO
PATRON DE DISEO ESTRUCTURAL

Adapter o Wrapper
El patrn Adapter (Adaptador) se utiliza para transformar una interfaz en otra, de tal modo que
una clase que no pudiera utilizar la primera, haga uso de ella a travs de la segunda.

Propsito
Convierte la interfaz de una clase en otra interfaz que el cliente espera. Adapter permite a las
clases trabajar juntas, lo que de otra manera no podra hacerlo debido a sus interfaces
incompatibles.
Aplicabilidad
Usar el patrn Adapter cuando:
Se desea usar una clase existente, y su interfaz no se iguala con la necesitada.
Cuando se desea crear una clase reusable que coopera con clases no relacionadas, es
decir, las clases no tienen necesariamente interfaces compatibles.


Estructura




Participantes
Target define la interfaz especfica del dominio que Client usa.
Client colabora con la conformacin de objetos para la interfaz Target.
Adaptee define una interfaz existente que necesita adaptarse
Adapter adapta la interfaz de Adaptee a la interfaz Target


Implementacin
Crear una nueva clase que ser el Adaptador, que extienda del componente existente e
implemente la interfaz obligatoria. De este modo tenemos la funcionalidad que queramos y
cumplimos la condicin de implementar la interfaz.
La diferencia entre los patrones Adapter y Facade, es que el primero reutiliza una interfaz ya
existente, mientras que el segundo define una nueva con el objetivo de simplificarla.



package Structural_patterns;

public class AdapterWrapperPattern {

public static void main(String args[]){
Guitar eGuitar = new ElectricGuitar();
eGuitar.onGuitar();
eGuitar.offGuitar();
Guitar eAGuitar = new ElectricAcousticGuitar();
eAGuitar.onGuitar();
eAGuitar.offGuitar();
}


public abstract class Guitar{
abstract public void onGuitar();
abstract public void offGuitar();
}

public class ElectricGuitar extends Guitar{

public void onGuitar() {
System.out.println("Playing Guitar");
}

public void offGuitar() {
System.out.println("I'm tired to play the guitar");
}
}

/**
* Class to Adapter/Wrapper
*/
public class AcousticGuitar{

public void play(){
System.out.println("Playing Guitar");
}
public void leaveGuitar(){
System.out.println("I'm tired to play the guitar");
}
}

/**
* we Adapter/Wrapper AcousticGuitar into
* ElectricAcousticGuitar to adapt into the GuitarModel
*/
public class ElectricAcousticGuitar extends Guitar{
AcousticGuitar acoustic = new AcousticGuitar();

public void onGuitar() {
acoustic.play();
}

public void offGuitar() {
acoustic.leaveGuitar();
}
}
}


EJEMPLO
Command (patrn de diseo)
Intencin
Este patrn permite solicitar una operacin a un objeto sin conocer realmente el contenido de
esta operacin, ni el receptor real de la misma. Para ello se encapsula la peticin como un
objeto, con lo que adems se facilita la parametrizacin de los mtodos.
Propsito
Encapsula un mensaje como un objeto, con lo que permite gestionar colas o registro de
mensaje y deshacer operaciones.
Soportar restaurar el estado a partir de un momento dado.
Ofrecer una interfaz comn que permita invocar las acciones de forma uniforme y
extender el sistema con nuevas acciones de forma ms sencilla.
Motivo
El concepto de "orden" puede ser ambiguo y complejo en los sistemas actuales y al
mismo tiempo muy extendido: intrpretes de rdenes del sistema operativo, lenguajes de
macros de paquetes ofimticos, gestores de bases de datos, protocolos de servidores de
Internet, etc.
Este patrn presenta una forma sencilla y verstil de implementar un sistema basado en
comandos facilitndose su uso y ampliacin.
Aplicaciones
Facilitar la parametrizacin de las acciones a realizar.
Independizar el momento de peticin del de ejecucin.
Implementar CallBacks, especificando que rdenes queremos que se ejecuten en ciertas
situaciones de otras rdenes. Es decir, un parmetro de una orden puede ser otra orden a
ejecutar.
Soportar el "deshacer".
Desarrollar sistemas utilizando rdenes de alto nivel que se construyen con operaciones
sencillas (primitivas).

Estructura

S-ar putea să vă placă și