Commit 6f3ac9be authored by Josue's avatar Josue

Patron Observer

parent 9a715b5f
package org.example.designpatterns.observer;
import org.example.designpatterns.observer.observer.PesoARGObserver;
import org.example.designpatterns.observer.observer.PesoMXOberserver;
import org.example.designpatterns.observer.observer.SolObserver;
import org.example.designpatterns.observer.observer.Subject;
public class App {
public static void main(String[] args) {
Subject subject = new Subject();
new SolObserver(subject);
new PesoARGObserver(subject);
new PesoMXOberserver(subject);
System.out.println("Si desea cambiar 10 dólares obtendrá: ");
subject.setEstado(10);
System.out.println("-------------------");
System.out.println("Si desea cambia 100 dlares obtendrá: ");
subject.setEstado(100);
}
}
package org.example.designpatterns.observer.observer;
public abstract class Observer {
protected Subject subject;
public abstract void actualizar();
}
package org.example.designpatterns.observer.observer;
public class PesoARGObserver extends Observer{
private double valorCambio = 29.86;
public PesoARGObserver(Subject subject) {
this.subject = subject;
this.subject.agregar(this);
}
@Override
public void actualizar() {
System.out.println("ARG: " + (subject.getEstado() * valorCambio));
}
}
package org.example.designpatterns.observer.observer;
public class PesoMXOberserver extends Observer{
private double valorCambio = 19.07;
public PesoMXOberserver(Subject subject) {
this.subject = subject;
this.subject.agregar(this);
}
@Override
public void actualizar() {
System.out.println("MX: " + (subject.getEstado() * valorCambio));
}
}
package org.example.designpatterns.observer.observer;
public class SolObserver extends Observer{
private double valorCambio = 3.75;
public SolObserver(Subject subject) {
this.subject = subject;
this.subject.agregar(this);
}
@Override
public void actualizar() {
System.out.println("PEN: " + (subject.getEstado() * valorCambio));
}
}
package org.example.designpatterns.observer.observer;
import java.util.ArrayList;
import java.util.List;
public class Subject {
private List<Observer> observers = new ArrayList<>();
private int estado;
public int getEstado() {
return estado;
}
public void setEstado(int estado) {
this.estado = estado;
notificarTodosObservadores();
}
public void agregar(Observer observer) {
observers.add(observer);
}
private void notificarTodosObservadores() {
for (Observer observer: observers) {
observer.actualizar();
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment