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
wiki:pdd_9 [2024/09/23 00:51] adminwiki:pdd_9 [2024/09/24 21:49] (current) admin
Line 61: Line 61:
  
   * 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.1727063511.txt.gz · Last modified: 2024/09/23 00:51 by admin