PATRONES DE DISEO - PowerPoint PPT Presentation

1 / 50
About This Presentation
Title:

PATRONES DE DISEO

Description:

Se presenta el problema de que la apariencia (look and feel) de estos objetos es ... poder crear los objetos con la apariencia apropiada para cada sistema operativo. ... – PowerPoint PPT presentation

Number of Views:107
Avg rating:3.0/5.0
Slides: 51
Provided by: ica86
Category:

less

Transcript and Presenter's Notes

Title: PATRONES DE DISEO


1
PATRONESDE DISEÑO
2
Patrones de diseño
3
Patrones de diseño
4
Patrones de diseño
5
Patrones de diseño
6
Patrones de diseño
7
Patrones de diseño
8
Patrones de diseño
9
Patrones de diseño
10
Patrones de diseño
Widget
11
Patrones de diseño
12
Patrones de diseño
  • Descripción de patrones de diseño
  • Nombre del patrón y clasificación
  • Propósito. Qué hace el patrón?. Para qué
    sirve?. Qué problemas de diseño resulte?
  • Otros nombres
  • Justificación
  • Aplicabilidad. En que situaciones se debe
    utilizar. En que situaciones no se debe utilizar.
  • Estructura. Representación gráfica (UML)
  • Participantes. Clases y objetos que participan y
    sus responsabilidades
  • Consecuencias. Rendimiento, facilidad de
    mantenimiento ...

13
Patrones de diseño
  • Implementación. Consejos, técnicas, asuntos
    específicos de algunos lenguajes
  • Código ejemplo
  • Ejemplos de uso
  • Patrones relacionados

14
Patrones de diseño
  • Qué problemas resuelven los patrones de diseño?
  • Encontrar objetos apropiados
  • Determinar la granularidad de los objetos
  • Especificar las interfaces de los objetos
  • Especificar las implementaciones de los objetos
    (Clases)
  • Implementar mecanismos de reutilización de código
  • Herencia versus Composición
  • Delegación

15
Patrones de diseño
  • Tipos de patrones
  • Patrones creacionales
  • Patrones estructurales
  • Patrones de comportamiento

16
Patrones de diseño
  • Patrones creacionales
  • Ayudan a que un sistema sea independiente de cómo
    sus objetos son creados
  • Patrones creacionales de clase. Usan herencia
    para variar las clases que son instanciadas
  • Patrones creacionales de objeto. Delegan la
    creación de objetos a otros objetos
  • Los patrones creacionales contienen conocimiento
    de qué clases concretas el sistema usa
  • Esconden la forma en que los objetos son creados

17
Patrones de diseño
  • Lo único que el sistema total conoce de los
    objetos son sus interfaces
  • Dan flexibilidad con respecto a
  • Qué es creado
  • Quién crea los objetos
  • Cómo se crean y cuándo
  • La configuración puede ser estática (en tiempo de
    compilación) o dinámica (en tiempo de ejecución)
  • Pueden ser competidores o pueden complementarse

18
Patrones de diseño
  • Ejemplo construir un laberinto para un juego

MapSite
enter()
Room
Wall
Door
Maze
enter() setSide() getSide()
enter()
enter()
isOpen
roomNumber
19
Patrones de diseño
  • public class MapSite
  • public abstract void enter()
  • public class Room extends mapsite()
  • private MapSite sides4
  • private int roomNumber
  • public Room(int roomNo) ...
  • public MapSite getSide(Direction dir) ...
  • public void setSide(Direction dir, MapSite
    site) ...

20
Patrones de diseño
public class Wall extends MapSite public
void enter() ... public class Door extends
Mapsite() public Door(Room r1, Room r2)
... public void enter() ... public
Room otherSideFrom(Room r) ... private
Room room1 private Room room2 private
boolean isOpen
21
public class Maze public Maze() ...
public void addRoom(Room r) ... public
Room RoomNo(int n) ... private ...
...
22
Public class MazeGame Maze createMaze()
Maze aMaze new Maze() Room r1
new Room(1) Room r2 new Room(2)
Door theDoor new Door(r1, r2)
aMaze.addRoom(r1) aMaze.addRoom(r2)
r1.setSide(Direction.North, new Wall())
r1.setSide(Direction.East, theDoor)
r1.setSide(Direction.South, newWall)
r1.setSide(direction.West, new Wall)
r2.setSide(Direction.North, new Wall())
r2.setSide(Direction.East, new Wall)
r2.setSide(Direction.South, newWall)
r2.setSide(direction.West, theDoor)
return aMaze
23
Patrones creacionales
  • Abstrac Factory
  • Propósito. Proveer una interfaz para crear
    familias de objetos relacionados sin especificar
    sus clases concretas
  • Otros nombres. Kit
  • Motivación. Ejemplo de interfaces de usuario.

24
Patrones creacionales
  • Aplicabilidad. Usar este patrón cuando
  • Un sistema debe ser independiente de como sus
    productos son creados, compuestos y representados
  • Un sistema debe ser configurado con una de
    múltiples familias de productos
  • Una familia de objetos relacionados está diseñada
    para ser usados conjuntamente
  • Se desea proveer una biblioteca de clases de
    productos y sólo se desea revelar sus interfaces,
    no sus implementaciones

25
Patrones creacionales
  • Estructura

AbstracProductA
ProductA1
ProductA2
AbstracProductB
ProductB1
ProductB2
26
Patrones creacionales
  • Participantes
  • Abstract Factory (WidgetFactory)
  • ConcreteFactory (WindowsFactory, MacFactory)
  • AbstractProduct (ScrollBar, Menu)
  • ConcreteProduct(WindowsScrollBar, WindowsMenu)
  • Client

27
Patrones creacionales
  • Colaboraciones
  • Normalmente se crea una única instancia de una
    clase concreta en tiempo de ejecución. Esta
    fábrica crea objetos que tienen determinada
    interfaz. Para crear objetos diferentes se usar
    una fábrica diferente
  • Fábrica abstracta difiere la creación de objetos
    a las subclases concretas.

28
Patrones creacionales
  • Consecuencias
  • Aísla las clases concretas.
  • Hace fácil cambiar de familia de productos
  • Promueve la consistencia entre productos
  • Es difícil soportar nuevos tipos de productos

29
Patrones creacionales
  • Implementación
  • Se puede implementar la fábrica como un singleton
  • Creación de productos.
  • La fabrica abstracta solo declara la interfaz de
    los productos
  • Usar el patrón FactoryMethod
  • Colocar en los métodos create un parámetro que
    indique lo que se desea crear

30
Patrones creacionales
  • Singleton
  • Propósito. Asegurar que una clase tiene una sola
    instancia y proveer un punto global de acceso a
    la misma
  • Motivación. Hay casos en que solo debe haber un
    objeto de una clase print spooler, file system,
    window manager
  • Aplicabilidad. Usar cuando
  • Debe haber exactamente una instancia de una clase
  • Cuando la única instancia debe ser extendible y
    los clientes deben ser capaces de usar la
    instancia extendida sin modificar el código

31
Patrones creacionales
  • Estructura

32
Patrones creacionales
  • Participantes. Singleton
  • Define una operación instance que permite a los
    clientes acceder a la única instancia
  • Puede ser responsable de crear su única instancia
  • Colaboraciones
  • Los clientes acceden a la instancia única a
    través de la operación instance

33
Patrones creacionales
  • Consecuencias
  • Acceso controlado a la instancia única
  • Espacio de nombres reducido (no se requieren
    variables globales)
  • Permite refinamiento de operaciones y
    representación. La clase se puede extender.
  • Más flexible que las operaciones de clase
    (métodos estáticos).

34
Patrones creacionales
  • Implementación
  • Class Singleton
  • private static Singleton instancenull
  • public static Singleton instance()
  • if (instance null)
  • instance new Singleton()
  • return instance
  • protected Singleton()

35
Patrones creacionales
  • Factory method
  • Propósito. Definir una interfaz para crear
    objetos, dejando que las subclases decidan que
    clase instanciar.
  • Motivación
  • Aplicabilidad. Usar cuando
  • Una clase no puede anticipar la clase de objetos
    que debe crear
  • Se necesita que las subclases especifiquen los
    objetos a ser creados

36
Patrones creacionales
  • Estructura

37
Patrones creacionales
  • Participantes
  • Producto
  • ProductoConcreto
  • Creador
  • CreadorConcreto
  • Colaboraciones
  • El patrón Creator delega en las subclases la
    creación de los objetos.

38
Patrones creacionales
  • Consecuencias
  • Eliminan la necesidad de especificar las clases
    de los objetos creados
  • El código solo trabaja con interfaces
  • Desventaja. Es posible que los clientes tengan
    que crear una subclase de creador solo para crear
    un objeto

39
Patrones creacionales
  • Implementación
  • Posibles implementaciones
  • El creador es una clase abstracta
  • El creador es una clase concreta
  • Métodos fábrica parametrizados

40
Patrones creacionales
  • Builder
  • Propósito. Separar la construcción de un objeto
    complejo de su representación de manera que el
    mismo proceso de construcción pueda crear
    diferentes representaciones
  • Motivación. Ejemplo una aplicación que convierte
    texto RTF a diferentes formatos texto ascii,
    TeX, TextWidget.

41
Patrones creacionales
  • Estructura

42
Patrones creacionales
  • Aplicabilidad. Usar cuando
  • El algoritmo para crear un objeto complejo debe
    ser independiente de las partes que constituyen
    el objeto y su ensamblaje
  • El proceso de construcción debe permitir
    representaciones diferentes del objeto
    construido.
  • Participantes
  • Builder (TextConverter)
  • ConcreteBuilder (ASCIIConverter, TeXConverter,
    ...)
  • Director (RTFReader).
  • Product (ASCIIText, TeXText)

43
Patrones creacionales
  • Colaboraciones
  • El cliente crea el objeto Director y lo configura
    con el constructor (builder deseado)
  • El director le notifica al constructor cada vez
    que se debe construir una parte del producto
  • El constructor procesa solicitudes del director y
    agrega partes al producto
  • El cliente obtiene el producto del constructor

44
Patrones creacionales
  • Consecuencias
  • Permite variar la representación interna del
    producto
  • El objeto constructor provee al director con una
    interfaz para construir el producto.
  • Permite aíslar el código de construcción y
    representación
  • Permite un control fino del proceso de
    construcción.
  • Los objetos son construidos paso por paso.
  • Cuando el proceso termina el producto es
    retribuido

45
Patrones creacionales
  • Implementación
  • Típicamente hay una clase abstracta Builder (o
    interfaz) que define una operación para crear
    cada componente.
  • Las clases concretas sobrecargan esas
    operaciones.
  • No hay clase abstracta para el producto debido a
    que éstos pueden variar mucho

46
Patrones creacionales
  • Prototype
  • Propósito. Especificar los tipos de objetos a ser
    creados usando un prototipo. Crear nuevos objetos
    clonando el prototipo
  • Motivación

47
Patrones creacionales
  • Aplicabilidad. Usar cuando
  • Las clases a instanciar se especifican en tiempo
    de ejecución
  • Para evitar una jerarquía de fábricas paralelas a
    la jerarquía de productos

48
Patrones creacionales
  • Estructura

49
Patrones creacionales
  • Participantes
  • Prototype
  • Concrete prototype
  • Client
  • Colaboraciones
  • Un cliente solicita a un prototipo que se clone a
    si mismo

50
Patrones creacionales
  • Consecuencias
  • Consecuencias similares a AbstractFactory
  • Se pueden agregar y eliminar productos en tiempo
    de ejecución
  • Menos uso de herencia
  • Permite configurar una aplicación con clases
    dinámicamente.
Write a Comment
User Comments (0)
About PowerShow.com