Buscar..


Introducción

Los patrones de diseño se formalizan según las mejores prácticas que el programador puede usar para resolver problemas comunes al diseñar una aplicación o sistema.

Los patrones de diseño pueden acelerar el proceso de desarrollo al proporcionar paradigmas de desarrollo probados y comprobados.

La reutilización de los patrones de diseño ayuda a prevenir problemas sutiles que pueden causar problemas mayores, y también mejora la legibilidad del código para los programadores y arquitectos que están familiarizados con los patrones.

Ejemplo de clase Singleton

Patrón de Java Singleton

Para implementar el patrón Singleton, tenemos diferentes enfoques, pero todos ellos tienen los siguientes conceptos comunes.

  • Constructor privado para restringir la creación de instancias de la clase de otras clases.
  • Variable estática privada de la misma clase que es la única instancia de la clase.
  • Método estático público que devuelve la instancia de la clase, este es el acceso global
  • punto para el mundo exterior para obtener la instancia de la clase singleton.
/**
 * Singleton class.
 */
public final class Singleton {

  /**
   * Private constructor so nobody can instantiate the class.
   */
  private Singleton() {}

  /**
   * Static to class instance of the class.
   */
  private static final Singleton INSTANCE = new Singleton();

  /**
   * To be called by user to obtain instance of the class.
   *
   * @return instance of the singleton.
   */
  public static Singleton getInstance() {
    return INSTANCE;
  }
}

Patrón observador

El patrón de observador es un patrón común, que se usa ampliamente en muchos contextos. Se puede tomar un ejemplo real de YouTube: cuando te gusta un canal y deseas recibir todas las noticias y ver nuevos videos de este canal, debes suscribirte a ese canal. Luego, cada vez que este canal publique alguna noticia, usted (y todos los demás suscriptores) recibirán una notificación.

Un observador tendrá dos componentes. Una es una emisora ​​(canal) y la otra es un receptor (usted o cualquier otro suscriptor). La emisora ​​manejará todas las instancias receptoras que se hayan suscrito. Cuando la emisora ​​dispare un nuevo evento, lo anunciará a todas las instancias del receptor. Cuando el receptor recibe un evento, tendrá que reaccionar a ese evento, por ejemplo, encendiendo YouTube y reproduciendo el nuevo video.

Implementando el patrón observador.

  1. La emisora ​​debe proporcionar métodos que permitan a los receptores suscribirse y darse de baja. Cuando la emisora ​​dispara un evento, los suscriptores deben ser notificados de que se ha producido un evento:

    class Channel{
        private List<Subscriber> subscribers;
        public void subscribe(Subscriber sub) {
            // Add new subscriber.
        }
        public void unsubscribe(Subscriber sub) {
            // Remove subscriber.
        }
        public void newEvent() {
            // Notification event for all subscribers.
        }
    }
    
  2. El receptor debe implementar un método que maneje el evento desde la emisora:

    interface Subscriber {
        void doSubscribe(Channel channel);
        void doUnsubscribe(Channel channel);
        void handleEvent();  // Process the new event.
    }
    


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow