Conocimientos de Patrones de Diseño en Java
Patrón Singleton
El patrón Singleton garantiza que una clase tenga solo una instancia y proporciona un punto de acceso global a esa instancia. Aquí hay un ejemplo de implementación en Java:
// Implementación del patrón Singleton
public class Singleton {
private static Singleton instancia;
private Singleton() {
// Constructor privado para evitar instanciación directa
}
public static Singleton obtenerInstancia() {
if (instancia == null) {
instancia = new Singleton();
}
return instancia;
}
}
En este ejemplo, la clase `Singleton` tiene un constructor privado y un método estático `obtenerInstancia()` que devuelve la única instancia de la clase, creándola si aún no existe.
Patrón Factory
El patrón Factory proporciona una interfaz para crear instancias de una clase, permitiendo a una subclase alterar el tipo de objetos que se crearán. Aquí hay un ejemplo de implementación en Java:
// Interfaz de la factoría
public interface Fabrica {
Producto crearProducto();
}
// Implementación de la factoría
public class FabricaConcreta implements Fabrica {
@Override
public Producto crearProducto() {
return new ProductoConcreto();
}
}
// Interfaz del producto
public interface Producto {
void operacion();
}
// Implementación del producto
public class ProductoConcreto implements Producto {
@Override
public void operacion() {
System.out.println("Realizando operación en ProductoConcreto");
}
}
En este ejemplo, la interfaz `Fabrica` define un método para crear un producto. La clase `FabricaConcreta` implementa esta interfaz y crea instancias de `ProductoConcreto`.
Patrón Observer
El patrón Observer define una dependencia de uno a muchos entre objetos, de modo que cuando un objeto cambia su estado, todos sus observadores son notificados y actualizados automáticamente. Aquí hay un ejemplo de implementación en Java:
// Interfaz del observador
public interface Observador {
void actualizar(String mensaje);
}
// Clase concreta del observador
public class ObservadorConcreto implements Observador {
@Override
public void actualizar(String mensaje) {
System.out.println("ObservadorConcreto recibe actualización: " + mensaje);
}
}
// Sujeto observable
public class SujetoObservable {
private List observadores = new ArrayList<>();
public void agregarObservador(Observador observador) {
observadores.add(observador);
}
public void notificarObservadores(String mensaje) {
for (Observador observador : observadores) {
observador.actualizar(mensaje);
}
}
}
En este ejemplo, la interfaz `Observador` define el método `actualizar`. La clase `ObservadorConcreto` implementa esta interfaz. La clase `SujetoObservable` tiene una lista de observadores y notifica a todos cuando se produce un cambio.
Conclusión
Los patrones de diseño son herramientas poderosas para la creación de software robusto y mantenible. En Java, la implementación correcta de patrones como Singleton, Factory y Observer puede mejorar la estructura y la flexibilidad de tu código, proporcionando soluciones probadas para problemas comunes de diseño.
No hay comentarios:
Publicar un comentario