Utilisation du design pattern observer
This commit is contained in:
parent
b64917bb5a
commit
0deca9eda5
6 changed files with 45 additions and 16 deletions
|
|
@ -1,6 +1,6 @@
|
|||
package org.example;
|
||||
|
||||
public class Accounting {
|
||||
public class Accounting implements Observer<String> {
|
||||
private String accounting;
|
||||
|
||||
public Accounting(String pAccounting) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
7
panier/src/main/java/org/example/Observable.java
Normal file
7
panier/src/main/java/org/example/Observable.java
Normal 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();
|
||||
}
|
||||
5
panier/src/main/java/org/example/Observer.java
Normal file
5
panier/src/main/java/org/example/Observer.java
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
package org.example;
|
||||
|
||||
public interface Observer<T> {
|
||||
public void process(T contenu);
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package org.example;
|
||||
|
||||
public class StockManagement {
|
||||
public class StockManagement implements Observer<String> {
|
||||
private String stockManagement;
|
||||
|
||||
public StockManagement(String pStockManagement) {
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue