Sie sind auf Seite 1von 8

INFORME DE

LECTURA
PATRONES DE
DISEO





Qu es un patrn de diseo?
Disear software orientado a objeto es difcil, y ms a objetos
reutilizables. Nuestro diseo debe ser especifico al problema que
enfrentamos pero lo suficientemente general pada adecuarse a
futuros cambios. No hay que resolver los problemas comenzando
desde cero sino reutilizando soluciones que hayan servido en el
pasado. Los patrones de diseo hacen que sea ms fcil la
reutilizacin de buenos diseos y arquitecturas.
Un patrn de diseo un problema y su solucin, que son
recurrentes en un entorno, es una descripcin de clases y objetos
comunicndose entre s adaptada para resolver un problema de
diseo general en un contexto particular.
En general los patrones de diseo tienen cuatro elementos esenciales:
Nombre: describe el problema junto con sus soluciones.
Problema: describe en qu casos utilizar el patrn.
Solucin: describe los elementos que constituyen el diseo. No
describe una aplicacin en concreto, sino que es una platilla para
aplicarse en muchas situaciones.
Consecuencias: resultados, ventajas y desventajas de utilizar el
patrn.

Problemas de Diseo
Encontrar los objetos adecuados: los patrones de diseo ayudan a
identificar las abstracciones menos obvias y los objetos que las
expresan. Hay patrones que describen como implementar familias
intercambiables de algoritmos o como representar cada estado de una
entidad como un objeto.
Determinar la granularidad de los Objetos: los patrones de diseo
se encargan de tratar de decidir que es un objeto y que no. Tambin
describen como descomponer objetos grandes en objetos ms
pequeos y la interaccin de objetos a travs de peticiones entre
grupos de objetos.
Especificar las interfaces de los objetos: los patrones de diseo
ayudan a definir las interfaces de los objetos identificando sus objetos
clave
Especificar las implementaciones de los objetos: los objetos son
una instanciacin de una clase. Las clases pueden definirse en
trmino de las existentes utilizando la herencia para que pueda usar
las definiciones y mtodos de una clase padre. Existen clases
abstractas llamadas interfaces que sirven para definir una estructura
comn para las subclases.
Herencia de clases frente a herencia de interfaces: es importante
diferenciar la clase de un objeto y su tipo. La clase define la
implementacin y el tipo define la interfaz del objeto. Un objeto puede
tener muchos tipos, y objetos de clases diferentes un tipo en comn.
Programar para interfaces, no para implementacin: la herencia
de clases no es ms que un mecanismo para extender funcionalidades
reutilizndolas. Pero tambin es importante la capacidad de para
definir familias de objetos con interfaces idnticas. De esta forma
todas las sublcases pueden responder peticiones en la interfaz de la
subclase abstracta que las define. Esto tiene dos ventajas: que los
clientes se adapten solamente a la interfaz abstracta y los clientes
solo conocen las clases abstractas que definen la interfaz.
Esto lleva al primer principio de diseo orientado a la reutilizacin:
Programe para una interfaz, no para una implementacin.


Reutilizacin
Las dos tcnicas ms comunes para hacer uso de la reutilizacin
de funcionalidades son la herencia y la composicin de objetos. La
composicin ensambla objetos para obtener funcionalidades ms
complejas.
Herencia:
- Se define en tiempo de compilacin.
- Facilita modificar la implementacin que est siendo
reutilizada.
- No se pueden cambiar las implementaciones en tiempo de
ejecucin.
- Rompe la encapsulacin.

Composicin:
- Se define dinmicamente en tiempo de ejecucin.
- Requiere que los objetos tengan en cuenta las interfaces
de los otros.
- No se rompe la encapsulacin.
- Dinamismo en la relacin de objetos.
Esto nos lleva al segundo principio de diseo orientado a la reutilizacin:
Favorecer la composicin de objetos frente a la herencia de clases.

Delegacin
Un objeto encargado de una peticin delega la misma en su
delegado. La principal ventaja es hacer que se fcil combinar
comportamientos en tiempo de ejecucin.

Estructuras que Relacionan Tiempo de Ejecucin y Tiempo de
Compilacin
La estructura en tiempo de ejecucin del cdigo del programa. La
estructura del cdigo se fija en tiempo de compilacin, y consiste en
clases con relaciones de herencia estticas. La estructura de tiempo de
ejecucin de un programa consiste en objetos que se comunican entre
s.
La agregacin implica que un objeto posee a otro o que es
responsable de l y tienen la misma vida.
La asociacin implica que un objeto simplemente conoce a otro.
Los objetos as relacionados pueden pedirse operaciones entre s, pero
no son responsables el uno del otro.

Disear para el Cambio
La clave para maximizar la reutilizacin reside en anticipar nuevos
requisitos y cambios en los requisitos existentes, y en disear los
sistemas de manera que se adapte a los cambios. Un diseo que no sea
robusto ante los cambios probablemente tenga que sufrir un rediseo
completo en el futuro. Los patrones de diseo ayudan a evitar esto al
asegurar que un sistema pueda cambiar de formas concretas.

Causas comunes de rediseo junto con los patrones de diseo que lo
resuelven:
- Crear un objeto especificando su clase explcitamente.
- Dependencia de operaciones concretas.
- Dependencia de plataformas hardware o software.
- Dependencia de las representaciones o implementaciones de
objetos.
- Dependencias algortmicas.
- Fuerte acoplamiento.
- Aadir funcionalidad mediante la herencia.
- Incapacidad para modificar las clases convenientemente.

Programas de aplicacin
Si estamos construyendo un programa de aplicacin, como un
editor de documentos o una hoja de clculo, la reutilizacin interna, la
facilidad de mantenimiento y la extensin son las principales prioridades
para que la aplicacin se pueda adaptar fcilmente a los cambios
futuros.
Toolkits
Un toolkit es un conjunto de clases relacionadas y reutilizables
diseadas para proporcionar funcionalidad til de propsito general, es
decir que son herramientas de uso general en aplicaciones. Nos
permiten, como desarrolladores, evitar recodificar funcionalidad comn.

Frameworks
Un frameworkes un conjunto de clases cooperantes que
constituyen un diseo reutilizable para una clase especfica de software,
determinando la arquitectura de la aplicacin y representando las
decisiones de diseo que son comunes a su dominio de aplicacin.

Cmo Seleccionar un Patrn de Diseo
- Considere cmo los patrones de diseo solucionan problemas de
diseo.
- Hojee las secciones Propsito.
- Estudie cmo se interrelacionan los patrones.
- Estudie patrones de propsito similar.
- Examine una causa de rediseo.
- Piense qu debera ser variable en su diseo.

Como Usar un Patrn de Diseo
- Lea el patrn de principio a fin para tener una perspectiva.
- Vuelva atrs y estudie las secciones de Estructura, Participantes y
Colaboraciones.
- Examine la seccin Cdigo de Ejemplo para ver un ejemplo
concreto del patrn en cdigo.
- Elija nombres significativos en el contexto de la aplicacin para los
participantes en el patrn.
- Defina las clases. Declare sus interfaces, establezca sus relaciones
de herencia y defina las variables de instancia que representan
datos y referencias de objetos.
- Defina nombres especficos de la aplicacin para las operaciones
del patrn.
- Implemente las operaciones para llevar a cabo las
responsabilidades y colaboraciones del patrn.





Captulo 2

En este captulo se presenta el diseo de un editor de documentos

Problemas de diseo
- Elegir las estructuras de los documentos.
- Formateado.
- Adornos de interfaz de usuario.
- Permitir varios estndares de interfaz de usuario. Poder modificar
la interfaz a travs de la evolucin de la etapa de desarrollo.
- Permitir mltiples sistemas de ventanas.
- Operaciones de usuario.
- Comprobacin ortogrfica y separacin de palabras.

El captulo muestra las clases que va a utilizar la aplicacin y los
patrones de diseo que va utilizando.

Glifos
Clase abstracta para todos los objetos que puedan aparecer en
la estructura de un documento. Para esta clase se utiliza el patrn
Composite que se utiliza para la composicin recursiva

Formateado
Es la clase encargada de dar formato al texto (glifo), es decir
separarlo en lneas, columnas, etc. Para poder cambiar rpidamente el
algoritmo de formateado en tiempo de ejecucin se encapsula el
formato en un objeto.

Componedor y composicin
Se define la clase Componedor para los objetos que puedan
almacenar un algoritmo de formateado. Los Glifos formateados forman
parte de una subclase Composicin. En esta clase se utiliza el patrn
Strategy que describe como encapsular un algoritmo en un objeto.

Interfaz de usuario
Para la interfaz de usuario se utiliza el patrn Decorator.
Expresa la relacin de clases y objetos que interactan en la creacin de
la interfaz.

Abstraccin de creacin de objetos
Para esto se utiliza el patrn Abstract Factory que separar la
clase que crea los objetos, de la jerarqua de objetos a instanciar
permitiendo instanciar objetos sin llamar a su constructor directamente.

Ventanas
La creacin de ventanas utiliza el patrn Abstract Factory y el
patrn Bridge que nos permite mantener y mejorar las abstracciones de
ventanas sin tocar el cdigo dependiente del sistema de ventanas.

Operaciones de usuario
El sistema tiene varias interfaces para llevar a cabo las operaciones de
usuario. Para llevar a cabo las operaciones se utiliza el patrn Command el
cual describe como encapsular una peticin usando una interfaz que oculta a
los clientes la implementacin de las peticiones.

Clase Iterator
Esta clase abstracta permite recorrer una estructura y acceder a sus
elementos. Para esto se usa el patrn Iterator que representa las tcnicas
utilizadas para realizar esta tarea y para encapsular los datos.
Separar la clase que crea los objetos, de la jerarqua de objetos a
instanciar.

Das könnte Ihnen auch gefallen