Monografias.com > Computación
Descargar Imprimir Comentar Ver trabajos relacionados

Patrones Estructurales de Software




Enviado por Pablo Turmero



Partes: 1, 2, 3


    Monografias.com
    1
    Patrones estructurales
    Cómo clases y objetos se combinan para formar estructuras más complejas.
    Patrones basados en herencia
    Sólo una forma de Adapter
    Patrones basados en composición
    Describen formas de combinar objetos para obtener nueva funcionalidad
    Posibilidad de cambiar la composición en tiempo de ejecución.

    Monografias.com
    2
    Adapter / Wrapper (Adaptador)
    Propósito
    Convertir la interfaz de una clase en otra que el cliente espera. Permite la colaboración de ciertas clases a pesar de tener interfaces incompatibles
    Motivación
    Un editor gráfico incluye una jerarquía que modela elementos gráficos (líneas, polígonos, texto,..) y se desea reutilizar una clase existente TextView para implementar la clase que representa elementos de texto, pero que tiene una interfaz incompatible.

    Monografias.com
    3
    Adaptador
    Motivación
    A menudo un toolkit o librería de clases no se puede utilizar debido a que su interfaz es incompatible con la interfaz requerida por la aplicación.
    No debemos o podemos cambiar la interfaz de la librería de clases

    Monografias.com
    4
    Adaptador
    Aplicabilidad
    Se desea usar una clase existente y su interfaz no coincide con la que se necesita.
    Se desea crear una clase reutilizable que debe colaborar con clases no relacionadas o imprevistas.

    Monografias.com
    5
    Problema
    ¿Cómo resolver interfaces incompatibles o proporcionar una interfaz estable para componentes que ofrecen una misma funcionalidad pero su interfaz es diferente?

    En una aplicación TPV soportar diferentes tipos de servicios externos de autorización de pagos.

    Monografias.com
    6
    Adaptador
    Consecuencias
    Un adaptador basado en herencia no funciona cuando queramos adaptar una clase y sus subclases.
    Un adaptador basado en herencia puede redefinir comportamiento heredado de Adaptado.
    Un adaptador basado en herencia no implica ninguna indirección, sólo introduce un objeto.
    Un adaptador basado en composición permite adaptar una clase y sus subclases, pudiendo añadir funcionalidad a todos los adaptados a la vez.
    Para un adaptador basado en composición es complicado redefinir comportamiento de Adaptado.

    Monografias.com
    7
    Adaptador
    Consecuencias

    La funcionalidad de Adaptador depende de la similitud entre la interfaz de las clases Objetivo y Adaptado.

    Adaptadores “pluggable”:

    ¿Cómo creamos una clase reutilizable preparada para colaborar con clases cuya interfaz se desconoce?

    Ejemplo: Clase TreeDisplay para visualizar estructuras jerárquicas de cualquier naturaleza.

    Monografias.com
    8
    Ejemplo en Java 1.3 Swing
    La librería Swing de Java incluye clases gráficas que muestran información organizada en cierto formato, como son JTree (información jerárquica), JTable (tabla bidimensional) o JList (lista de datos). Estas clases son clientes respectivamente de TreeModel, TableModel y ListModel que le aíslan de los detalles de un modelo de datos concreto y que incluyen métodos que le permiten obtener los datos a representar según el formato que corresponda.

    Monografias.com
    9
    Ejemplo en Java 1.3 Swing
    public interface ListModel {
    int getSize();
    Object getElementAt(int index);
    }
    public interface TableModel {
    public int getRowCount();
    // obtener número de filas
    public int getColumnCount();
    // obtener número de columnas
    public Object getValueAt(int fil, int col);
    // retorna valor del elemento fila fil y columna col
    public String getColumnName(int col);
    // retorna nombre de la columna col
    }

    Monografias.com
    10
    Ejemplo en Java 1.3 Swing
    public interface TreeModel {
    public Object getRoot();
    // retorna nodo raíz
    public Object getChild(Object parent, int index);
    // retorna nodo hijo del padre en posición index
    public int getChildCount(Object parent);
    // retorna número de hijos del nodo padre
    public boolean isLeaf(Object node);
    // retorna true si es un nodo hoja
    }

    Partes: 1, 2, 3

    Página siguiente 

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter