Utilisation du design pattern observer

This commit is contained in:
Feror 2025-01-30 10:05:23 +01:00
parent b64917bb5a
commit 0deca9eda5
6 changed files with 45 additions and 16 deletions

View file

@ -1,6 +1,6 @@
package org.example;
public class Accounting {
public class Accounting implements Observer<String> {
private String accounting;
public Accounting(String pAccounting) {

View file

@ -1,14 +1,14 @@
package org.example;
public class Cart {
private StockManagement stock;
private Accounting accounting;
private String content;
import java.util.ArrayList;
public Cart(StockManagement pStock, Accounting pAccounting) {
this.stock = pStock;
this.accounting = pAccounting;
this.content = new String ("Contenu du panier");
public class Cart implements Observable<String> {
private String content;
private ArrayList<Observer<String>> observers;
public Cart() {
this.observers = new ArrayList<>();
this.content = "Contenu du panier";
}
public String getContent() {
@ -16,7 +16,23 @@ public class Cart {
}
public void initiateOrder() {
this.stock.process(this.content);
this.accounting.process(this.content);
notifyObserver();
}
@Override
public void addObserver(Observer<String> obs) {
observers.add(obs);
}
@Override
public void removeObserver(Observer<String> obs) {
observers.remove(obs);
}
@Override
public void notifyObserver() {
for (Observer<String> obs : observers) {
obs.process(this.content);
}
}
}

View file

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

View file

@ -0,0 +1,5 @@
package org.example;
public interface Observer<T> {
public void process(T contenu);
}

View file

@ -1,6 +1,6 @@
package org.example;
public class StockManagement {
public class StockManagement implements Observer<String> {
private String stockManagement;
public StockManagement(String pStockManagement) {

View file

@ -10,9 +10,7 @@ import static org.junit.jupiter.api.Assertions.*;
class CartTest {
@Test
void testGetContenu() {
StockManagement stock = new StockManagement("Stock1");
Accounting compta = new Accounting("Compta1");
Cart cart = new Cart(stock, compta);
Cart cart = new Cart();
assertEquals("Contenu du panier", cart.getContent());
}
@ -21,7 +19,10 @@ class CartTest {
void testInitiateOrder() {
StockManagement stock = new StockManagement("Stock1");
Accounting compta = new Accounting("Compta1");
Cart cart = new Cart(stock, compta);
Cart cart = new Cart();
cart.addObserver(stock);
cart.addObserver(compta);
ByteArrayOutputStream outContent = new ByteArrayOutputStream();
System.setOut(new PrintStream(outContent));