From 0deca9eda5c5150d6f099475f38c93a34538ec49 Mon Sep 17 00:00:00 2001 From: Feror Date: Thu, 30 Jan 2025 10:05:23 +0100 Subject: [PATCH] Utilisation du design pattern observer --- .../src/main/java/org/example/Accounting.java | 2 +- panier/src/main/java/org/example/Cart.java | 36 +++++++++++++------ .../src/main/java/org/example/Observable.java | 7 ++++ .../src/main/java/org/example/Observer.java | 5 +++ .../java/org/example/StockManagement.java | 2 +- .../src/test/java/org/example/CartTest.java | 9 ++--- 6 files changed, 45 insertions(+), 16 deletions(-) create mode 100644 panier/src/main/java/org/example/Observable.java create mode 100644 panier/src/main/java/org/example/Observer.java diff --git a/panier/src/main/java/org/example/Accounting.java b/panier/src/main/java/org/example/Accounting.java index 56d4b10..3f7c842 100644 --- a/panier/src/main/java/org/example/Accounting.java +++ b/panier/src/main/java/org/example/Accounting.java @@ -1,6 +1,6 @@ package org.example; -public class Accounting { +public class Accounting implements Observer { private String accounting; public Accounting(String pAccounting) { diff --git a/panier/src/main/java/org/example/Cart.java b/panier/src/main/java/org/example/Cart.java index 3049b75..79d715d 100644 --- a/panier/src/main/java/org/example/Cart.java +++ b/panier/src/main/java/org/example/Cart.java @@ -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 { + private String content; + private ArrayList> 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 obs) { + observers.add(obs); + } + + @Override + public void removeObserver(Observer obs) { + observers.remove(obs); + } + + @Override + public void notifyObserver() { + for (Observer obs : observers) { + obs.process(this.content); + } } } diff --git a/panier/src/main/java/org/example/Observable.java b/panier/src/main/java/org/example/Observable.java new file mode 100644 index 0000000..577275e --- /dev/null +++ b/panier/src/main/java/org/example/Observable.java @@ -0,0 +1,7 @@ +package org.example; + +public interface Observable { + public void addObserver(Observer obs); + public void removeObserver(Observer obs); + public void notifyObserver(); +} diff --git a/panier/src/main/java/org/example/Observer.java b/panier/src/main/java/org/example/Observer.java new file mode 100644 index 0000000..9eaef7a --- /dev/null +++ b/panier/src/main/java/org/example/Observer.java @@ -0,0 +1,5 @@ +package org.example; + +public interface Observer { + public void process(T contenu); +} diff --git a/panier/src/main/java/org/example/StockManagement.java b/panier/src/main/java/org/example/StockManagement.java index e6531ae..0cabd64 100644 --- a/panier/src/main/java/org/example/StockManagement.java +++ b/panier/src/main/java/org/example/StockManagement.java @@ -1,6 +1,6 @@ package org.example; -public class StockManagement { +public class StockManagement implements Observer { private String stockManagement; public StockManagement(String pStockManagement) { diff --git a/panier/src/test/java/org/example/CartTest.java b/panier/src/test/java/org/example/CartTest.java index 1d3c312..69bfaf7 100644 --- a/panier/src/test/java/org/example/CartTest.java +++ b/panier/src/test/java/org/example/CartTest.java @@ -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));