Beruflich Dokumente
Kultur Dokumente
Patrones Creacionales
Agenda
1.
2.
3.
4.
5.
PATRONES DE DISEO
Introduccin
Definicin
Objetivos de los patrones
Categoras de patrones
Estructuras o plantillas de patrones
Patrones de Creacin
Facilitan y simplifican la creacin de objetos
Permiten crear objetos sin definir la clase
Patrones de Creacin
Singleton (nico)
Restringe la creacin de un nico objeto de
Builder (Constructor)
Simplifica la construccin de objetos
Patrones de Creacin
Abstract Factory (Fbrica Abstracta)
Permite crear objetos de un conjunto de
PATRON SINGLETON
La oficina de la
presidencia de los
Estados Unidos es un
ejemplo de un
Singleton, ya que
puede haber como
mximo un
presidente activo en
cualquier momento
dado.
Independientemente
de quin ejerza la
funcin, el ttulo "El
Presidente de los
PATRON SINGLETON
La oficina de la presidencia de los Estados Unidos
corresponde a Singleton
La oficina cuenta con una instancia operador (el
ttulo de presidente de los Estados Unidos), que
proporciona acceso a la persona en la oficina
En cualquier momento, a lo sumo una instancia
nica del Presidente existe
El ttulo de la oficina ofrece un acceso controlado a
una nica instancia de presidente
Desde la oficina de la Presidencia encapsula al
presidente, hay un control estricto sobre cmo y
cuando el presidente puede acceder
PATRON SINGLETON
PROBLEMA
Queremos tener slo uno de un objeto, pero no
Patrones de Creacin
Singleton (nico)
Propiedades
Tipo: Creacin, Nivel: Objeto
Propsito
Permite tener una nica instancia de esta
Patrones de Creacin
Singleton (nico)
Introduccin
Hay veces que se necesita esta funcionalidad
Por ejemplo: Un histrico de todas las acciones
Patrones de Creacin
Singleton (nico)
Introduccin
Se podra crear el objeto al inicio y colocarlo
Patrones de Creacin
Singleton (nico)
Aplicabilidad
Patrones de Creacin
Singleton (nico)
Descripcin
Asegura crear como mximo una instancia de un
objeto. Esta instancia es accedida mediante un
mtodo de la clase.
Ponga el constructor privado
Los clientes (quienes quieren acceder a la case
Patrones de Creacin
Singleton (nico)
Implementacin
Clase que tiene privado el
P. Creacional: Singleton
Ejemplo
USTax es el Singleton y solo puede haber
Diagrama de clase
Calculator
public class Calculator {
public static void main(String[] args) {
USTax tax = USTax.getInstance();
tax.salesTotal();
}
}
USTax
public class USTax {
private static USTax instance;
private USTax()
{};
public static USTax getInstance()
{ if (instance== null)
instance= new USTax();
return instance;}
public float salesTotal()
{ return 2500; }
}
Patrones de Creacin
Singleton (nico)
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class HistoryList {
private static HistoryList instance = new HistoryList();
private List history = new ArrayList();
private HistoryList() {
}
public static HistoryList getInstance() {
return instance;
}
public void addCommand(String command) {
history.add(command);
}
public Object undoCommand() {
return history.remove(history.size() - 1);
}
}
...
Patrones de Creacin
Singleton (nico)
Ventajas
La clase Singleton es la nica que puede crear
objetos de la clase, asegurando la unicidad
No se necesita pasar la referencia a todos los
objetos que la necesiten, simplificando el
desarrollo y haciendo la aplicacin ms
mantenible
Inconvenientes
Puede tener problemas en aplicaciones con
muchos hilos de ejecucin y con una nica
instancia
Si en el sistema evoluciona y se necesitan ms
instancias de la clase, habra que cambiar todos
los accesos a la clase Singleton
Patrones de Creacin
Singleton (nico)
Variaciones del patrn
Mantener varias instancias que pueden ser
Patrones de Creacin
Singleton (nico)
Patrones relacionados
Abstract Factory (Factora Abstracta)
Builder (Constructor)
Prototype (Prototipo)
Patrones de Creacin
Singleton (nico)
Patrn Singleton en la API de Java
Clase java.awt.Toolkit
Variacin del patrn porque Toolkit es abstracta
y la instancia devuelta es de una clase hija
El mtodo es getDefaultToolkit()
Clase java.lang.Runtime
El mtodo es getRuntime()
Clase java.text.DateFormat
Variacin del patrn porque DateFormat es
abstracta
Tiene varios mtodos con varias instancias
getDateInstance(), getDateInstance(int
style), getDateTimeInstance(),
Ejemplos
Dos interesantes ejemplos que aclaran el
concepto del patrn Singleton
DEBER
Realizar los siguientes ejercicios tanto en
Java como en C#
Dos ejercicios del video visto
Ejercicio del Instituto Educativo que lo
encuentra en:
http://migranitodejava.blogspot.com/search/l
abel/Singleton