User Tools

Site Tools


wiki:pdd_9

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
wiki:pdd_9 [2024/09/23 00:51] adminwiki:pdd_9 [2024/09/24 21:49] (current) admin
Line 60: Line 60:
   * No acopla a los sujetos con sus observadores. En realidad, los sujetos — como ''Temperatura'' en el ejemplo — no conocen a sus observadores. De manera genérica, los sujetos publican un evento anunciando el cambio de su estado — llamando a ''notifyObservers'' — y los observadores interesados son notificados. Este comportamiento facilita la reutilización de los sujetos en diversos escenarios y también la implementación de diferentes tipos de observadores para el mismo tipo de sujeto.   * No acopla a los sujetos con sus observadores. En realidad, los sujetos — como ''Temperatura'' en el ejemplo — no conocen a sus observadores. De manera genérica, los sujetos publican un evento anunciando el cambio de su estado — llamando a ''notifyObservers'' — y los observadores interesados son notificados. Este comportamiento facilita la reutilización de los sujetos en diversos escenarios y también la implementación de diferentes tipos de observadores para el mismo tipo de sujeto.
  
-  * Una vez implementado, el patrón Observador proporciona un mecanismo de notificación que puede ser reutilizado por diferentes pares de sujeto-observador. Por ejemplo, podemos reutilizar la clase Subject y la interfaz Observer para notificaciones relacionadas con la presión atmosférica y los barómetros, la humedad del aire y los higrómetros, la velocidad del viento y los anemómetros, etc.+  * Una vez implementado, el patrón Observador proporciona un mecanismo de notificación que puede ser reutilizado por diferentes pares de sujeto-observador. Por ejemplo, podemos reutilizar la clase ''Subject'' y la interfaz ''Observer'' para notificaciones relacionadas con la presión atmosférica y los barómetros, la humedad del aire y los higrómetros, la velocidad del viento y los anemómetros, etc. 
 + 
 +El código completo de la implementación del patrón se encuentra a continuación: 
 + 
 +<code java> 
 + 
 +import java.util.List; 
 +import java.util.ArrayList; 
 +import java.util.Iterator; 
 + 
 +class Subject { 
 +  private List<Observer> observers = new ArrayList<Observer>(); 
 +   
 +  public void addObserver(Observer observer) { 
 +    observers.add(observer); 
 +  } 
 +   
 +  public void removeObserver(Observer observer) { 
 +    observers.remove(observer); 
 +  } 
 +   
 +  public void notifyObservers() { 
 +    Iterator it = observers.iterator(); 
 +    while (it.hasNext()) { 
 +      Observer obs= (Observer) it.next(); 
 +      obs.update(this);  
 +    } 
 +  } 
 +   
 +
 + 
 +interface Observer { 
 +  public void update(Subject s); 
 +
 + 
 + 
 +class Temperatura extends Subject 
 +   private double temp; 
 +    
 +   public double getTemp() { 
 +     return temp; 
 +   } 
 +   public void setTemp(double temp) { 
 +     this.temp = temp; 
 +     notifyObservers(); 
 +   } 
 +
 + 
 +class TermometroCelsius implements Observer 
 +  public void update(Subject s) { 
 +    double temp = ((Temperatura) s).getTemp(); 
 +    System.out.println("Temperatura Celsius: " + temp); 
 +  } 
 +
 + 
 +public class Main { 
 +   
 +   public static void  main(String [] args) { 
 +      Temperatura t = new Temperatura(); 
 +      t.addObserver(new TermometroCelsius ()); 
 +      t.setTemp(100.0); 
 +   } 
 + 
 +
 + 
 + 
 +</code>
  
wiki/pdd_9.1727063476.txt.gz · Last modified: 2024/09/23 00:51 by admin