Java Singleton. Ejemplo de Java Singleton (Patrones y ClassLoaders)

Documentos relacionados
Java Static Method y como usarlo correctamente

Java 8 FlatMap y Streams

Java Herencia vs Interfaces

Java Session. Usando Java Session en aplicaciones web

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Java Optional ifpresent y como utilizarlo

Uso de Java Generics (I)

Entiendo los métodos de Java equals y hashcode

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Ejercicio 3 Proyecto Intérprete Curso de Spring Framework

Estructuras de control selectivas

Java interface y extensibilidad

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

Programación Orientada a Objetos en Java

Que es un Android Intent?

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Práctica No. 5. Estructuras con Memoria Dinámica

Java Interfaces y el concepto de simplicidad

Clases abstractas e interfaces en Java

El concepto Java Reflection y como utilizarlo

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Tema 4- Representación Enlazada

Examen Teórico Convocatoria de Junio de 2012

Programación Orientada a Objetos con Java

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Spring Boot. Qué es Spring Boot?

Concurso: Cuánto sabes de JAVA?

Java Constructores por defecto. Java Constructores this() y super()

INSTITUTO TECNOLOGICO DE VILLAHERMOSA

3.4 Clases y Objetos 05/04/2004. Conceptos Generales. Modificadores de la Clase. Estructura de una Clase. Variables Miembros

LISTAS CIRCULARES. // Métodos private CElemento() {} // constructor. ultimo

Ahora bien puede estar el fichero persistence.xml en algún otro sitio?

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

! Fundamentos de la POO. ! Comportamiento y estado. ! Clases y objetos en Java

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS

Bloque II. Elementos del lenguaje de programación Java

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

Práctica 2. Búsqueda I

HOJA DE EJERCICIOS 4 INTERFACES Y CLASES ABSTRACTAS EN JAVA Y C++

Programación Orientada a Objetos Curso 2014/2015. Práctica 11

12. Tipos de atributos

Práctica 11f. Práctica 11f. José M. Ordax

UNADM. Estructura de datos. Guillermo Duran Garcia AL Actividad 2. Identificación de errores en métodos de ordenación

Manejo de archivos de acceso directo en Java.

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

10 -Herencia Y Polimorfismo. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Práctica 5c. Práctica 5c. José M. Ordax

Introducción. Curso de Middleware. Práctica 1. 1 de 14

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Relación entre clases. Ejemplo de Clase: Punto !

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Vamos a mostrar el código fuente de la clase Persona y el del Servlet que imprime una lista de personas :

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura).

PROGRAMACIÓN EN JAVA

18. Interfaces Declaración de una interfaz

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

FUNCIONES O MÉTODOS. Algoritmia y Programación

Vamos a ver un ejemplo y profundizar un poco en su funcionamiento. Para ello vamos a definir las dependencias del proyecto vía Maven:

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

o Una clase es un tipo al cual pertenecen objetos o instancias de la clase.

Java en 2 horas. Rodrigo Santamaría

INTRODUCCION A LA PROGRAMACION EN JAVA

Programación Concurrente y Distribuida Ingeniería Informática Facultad de Ciencias Universidad de Cantabria.

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Utilizando un JPA Stream con JPA 2.2

Ejercicio 2 Hola Mundo con Spring Framework Curso de Spring Framework

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Examen Teórico. Convocatoria de Febrero de 2015

Conceptos básicos de Orientación a Objetos, manejo con Eclipse.

Java Generic Repository y JPA

Herencia y Polimorfismo

Práctica No. 2. Tipos de Datos y Entrada/Salida Estándar

Eventos. Nota: Los eventos poseen las siguientes características:

Instituto Tecnológico de Zacatecas. Departamento de Sistemas y Computación. Licenciatura en Informática. Organización de Datos

Práctica #2. Patrón de diseño Factory Method. 2.1 Objetivos. 2.2 Práctica a realizar

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P de Ingeniería de Sistemas e Informática NETBEANS 7.0

Transcripción:

Como ya he comentado en varias ocasiones el conocimiento de los patrones de diseño es algo clave a la hora de abordar desarrollos y de solucionar problemas.hoy voy a hablar un poco a detalle de uno de los patrones de diseño mas sencillo,el patron Singleton. Este patrón de diseño se encarga de que una clase determinada unicamente pueda tener un único objeto.normalmente una clase puede instanciar todos los objetos que necesite. Sin embargo una clase que siga el patrón Singleton tiene la peculiaridad de que solo puede instanciar un único objeto.este tipo de clases son habituales en temas como configurar parámetros generales de la aplicación ya que una vez instanciado el objeto los valores se mantienen y son compartidos por toda la aplicación. Vamos a configurar una clase con el patrón Singleton, a esta clase la llamaremos Configurador. Java Singleton Una vez que tenemos claro cual es el concepto de Configurador vamos a crearlo en código.en este caso nuestro configurador almacenará dos valores url, y base de datos que serán

compartidos por el resto de Clases de la aplicación. package com.arquitecturajava; public class Configurador { private String url; private String basedatos; private static final Configurador miconfigurador; public static Configurador getconfigurador(string url,string basedatos) { if (miconfigurador==null) { miconfigurador=new Configurador(url,baseDatos); return miconfigurador; private Configurador(String url,string basedatos){ this.url=url; this.basedatos=basedatos; public String geturl() { return url;

public void seturl(string url) { this.url = url; public String getbasedatos() { return basedatos; public void setbasedatos(string basedatos) { this.basedatos = basedatos; Para conseguir que una clase sea de tipo Singleton necesitamos en primer lugar que su constructor sea privado. De esa forma ningún programa será capaz de construir objetos de esta tipo. En segundo lugar necesitaremos disponer de una variable estatica privada que almacene una referencia al objeto que vamos a crear a traves del constructor. Por ultimo un método estático publico que se encarga de instanciar el objeto la primera vez y almacenarlo en la variable estática.

Una vez aclarado como funciona un Singleton es muy sencillo utilizarle desde un programa ya que basta con invocar al método estático. package com.arquitecturajava; public class Principal { public static void main(string[] args) { Configurador c= Configurador.getConfigurador("miurl", "mibasedatos"); System.out.println(c.getUrl()); System.out.println(c.getBaseDatos());

Singleton y ClassLoaders A veces los patrones pueden sernos muy útiles y a veces pueden no serlo tanto y llevarnos a situaciones problemáticas. Por ejemplo si preguntamos lo siguiente. El patrón Singleton nos genera un único objeto para una clase Java?. La respuesta mas normal es SI sin embargo esta no es verdad del todo.la respuesta correcta es que el patron Singleton nos genera un objeto por cada clase cargada en el mismo ClassLoader. Que quiere decir esto?. Pues quiere decir que por ejemplo dos aplicaciones web que cada una tiene su propio WebClassLoader tendrán cada una so propia instancia. Esto en principio no es problemático porque se encuentran aisladas. Ahora bien hay

situaciones en las que un administrador de sistemas puede decidir compartir librerias y clases entre distintas aplicaciones. En este caso si podemos tener problemas ya que el objeto Singleton que en principio fue diseñado para configurar una aplicación concreta estará compartido por varias. Mucho ojo sobre como gestionamos este patrón de diseño ya que facilmente causará problema.