




































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Patrones que se repiten a la hora de programar y como implementarlos
Tipo: Diapositivas
1 / 44
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





































Llenguage de Especificació Contractes en UML i Domain Arquitectura (vista lògica) en UML Aplicació tres capes + patró Domain Model Aplicació patrons de disseny Repositori patrons de disseny Identificació Adaptació Etapa de disseny Canviabilitat Eficiència Portabilitat Reusabilitat Base de dades
package singleton.demo; public class Singleton { // inicialización “eager” private static Singleton instance = new Singleton(); // la constructora es privada para prohibir la libre instanciación private Singleton() {…} public static Singleton getInstance() { return instance; } }
package singleton.demo; public class Singleton { // la inicialización podría suprimirse (default) private static Singleton instance = null; private Singleton() {…} private static class SingletonHelper { private static final Singleton instance = new Singleton(); } public static Singleton getInstance() { return SingletonHelper.instance; } }
Ejemplo : Una interfaz gráfica debería permitir añadir propiedades (p.ej. bordes) y/o comportamientos (p.ej. scrolling) a cada uno de sus componentes de forma flexible. Solución : Envolver el componente en otro objeto que añada la propiedad/comportamiento, el Decorador.
// Si sólo tuviera operaciones diferidas, podría ser una interface abstract class VisualComponent { public abstract void Draw(); public abstract void Resize(); … } // TextComponent: closed for modification, open for extension class TextComponent extends VisualComponent { public void Draw() {…} public void Resize() {…} … }
class BorderDecorator extends Decorator { private int width; public BorderDecorator(VisualComponent c, int borderWidth) { super(c); width = borderWidth; } public void Draw() { super.Draw(); DrawBorder(width); } private void DrawBorder (int w) {…} … } Idem clase ScrollDecorator…
Un ejemplo de uso: class DecoratorPatternEx { public static void main (String[] args) { TextComponent c = new TextComponent(); // “decoro” la ventana con un scroll ScrollDecorator sd = new ScrollDecorator(c); sd.Draw(); // “decoro” la ventana con scroll con un borde BorderDecorator bd = new BorderDecorator(sd, 5); bd.Draw(); // asumiendo que la clase Window tiene una operación SetContents // para poner un VisualComponent en un objeto Window window = new Window(); window.SetContents(bd); … } }