Déportation de l'observable dans une sous-classe pour le déclenchement de la commande
All checks were successful
Gradle Test / test (push) Successful in 52s

This commit is contained in:
Feror 2025-01-30 11:48:30 +01:00
parent 446fbbf89b
commit d0a348f19f
2 changed files with 32 additions and 16 deletions

View file

@ -2,21 +2,14 @@ package org.example;
import java.util.ArrayList; import java.util.ArrayList;
public class Cart implements Observable<String> { public class Cart {
private String content; private String content;
private class OrderInitiationNotifier implements Observable<String> {
private ArrayList<Observer<String>> observers; private ArrayList<Observer<String>> observers;
public Cart() { public OrderInitiationNotifier() {
this.observers = new ArrayList<>(); this.observers = new ArrayList<>();
this.content = "Contenu du panier";
}
public String getContent() {
return this.content;
}
public void initiateOrder() {
notifyObserver();
} }
@Override @Override
@ -30,9 +23,32 @@ public class Cart implements Observable<String> {
} }
@Override @Override
public void notifyObserver() { public void notifyObserver(String content) {
for (Observer<String> obs : observers) { for (Observer<String> obs : observers) {
obs.process(this.content); obs.process(content);
} }
} }
} }
public final OrderInitiationNotifier orderInitiationNotifier = new OrderInitiationNotifier();
public Cart() {
this.content = "Contenu du panier";
}
public String getContent() {
return this.content;
}
public void initiateOrder() {
orderInitiationNotifier.notifyObserver(this.content);
}
public void addObserver(Observer<String> obs) {
orderInitiationNotifier.addObserver(obs);
}
public void removeObserver(Observer<String> obs) {
orderInitiationNotifier.removeObserver(obs);
}
}

View file

@ -3,5 +3,5 @@ package org.example;
public interface Observable<T> { public interface Observable<T> {
public void addObserver(Observer<T> obs); public void addObserver(Observer<T> obs);
public void removeObserver(Observer<T> obs); public void removeObserver(Observer<T> obs);
public void notifyObserver(); public void notifyObserver(T value);
} }