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; package org.example;
public class Accounting { public class Accounting implements Observer<String> {
private String accounting; private String accounting;
public Accounting(String pAccounting) { public Accounting(String pAccounting) {

View file

@ -1,14 +1,14 @@
package org.example; package org.example;
public class Cart { import java.util.ArrayList;
private StockManagement stock;
private Accounting accounting;
private String content;
public Cart(StockManagement pStock, Accounting pAccounting) { public class Cart implements Observable<String> {
this.stock = pStock; private String content;
this.accounting = pAccounting; private ArrayList<Observer<String>> observers;
this.content = new String ("Contenu du panier");
public Cart() {
this.observers = new ArrayList<>();
this.content = "Contenu du panier";
} }
public String getContent() { public String getContent() {
@ -16,7 +16,23 @@ public class Cart {
} }
public void initiateOrder() { public void initiateOrder() {
this.stock.process(this.content); notifyObserver();
this.accounting.process(this.content); }
@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; package org.example;
public class StockManagement { public class StockManagement implements Observer<String> {
private String stockManagement; private String stockManagement;
public StockManagement(String pStockManagement) { public StockManagement(String pStockManagement) {

View file

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