Programmation en utilisant le modèle ʻObserver` du modèle de conception. Informez "Takashi" et "Climb" que le petit déjeuner, le déjeuner et le dîner sont prêts. J'utilise Java 8.
DesignPattern → Nom du projet |---src | --- Observer → Nom du package | --- Observer.java (Interface pour représenter l'observateur) | --- ChildObserver.java (Classe qui vous notifie que le riz est prêt) | --- CookGenerator.java (classe abstraite pour faire du riz) | --- BreakfastGenerator.java (Cours de préparation du petit-déjeuner) | --- LunchGenerator.java (Cours de préparation du déjeuner) | --- DinnerGenerator.java (Cours de préparation du dîner) | --- Main.java (Classe qui effectue le traitement principal pour l'exécution du programme)
Observer.java
package Observer;
public interface Observer {
public abstract void update(CookGenerator generator);
}
ChildObserver.java
package Observer;
public class ChildObserver implements Observer {
private String name;
public ChildObserver(String name) {
this.name = name;
}
public void update(CookGenerator generator) {
System.out.println(name + "! " + generator + "J'ai pu le faire!");
}
}
CookGenerator.java
package Observer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public abstract class CookGenerator {
private List<Observer> observers = new ArrayList<>();
public void addObserver(Observer observer) {
observers.add(observer);
}
//Je n'utilise pas cette méthode
public void deleteObserver(Observer observer) {
observers.remove(observer);
}
public void notifyObservers() {
Iterator it = observers.iterator();
while (it.hasNext()) {
Observer o = (Observer)it.next();
o.update(this);
}
}
public abstract void cook();
}
BreakfastGenerator.java
package Observer;
public class BreakfastGenerator extends CookGenerator {
@Override
public void cook() {
notifyObservers();
}
@Override
public String toString() {
return "petit déjeuner";
}
}
LunchGenerator.java
package Observer;
public class LunchGenerator extends CookGenerator {
@Override
public void cook() {
notifyObservers();
}
@Override
public String toString() {
return "le déjeuner";
}
}
DinnerGenerator.java
package Observer;
public class DinnerGenerator extends CookGenerator {
@Override
public void cook() {
notifyObservers();
}
@Override
public String toString() {
return "Dîner";
}
}
Main.java
package Observer;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) throws Exception {
List<CookGenerator> generatorList = new ArrayList<>();
CookGenerator breakfast = new BreakfastGenerator();
CookGenerator lunch = new LunchGenerator();
CookGenerator dinner = new DinnerGenerator();
generatorList.add(breakfast);
generatorList.add(lunch);
generatorList.add(dinner);
Observer takashi = new ChildObserver("Takashi");
Observer noboru = new ChildObserver("Montée");
for (CookGenerator generator : generatorList) {
generator.addObserver(takashi);
generator.addObserver(noboru);
}
for (CookGenerator generator : generatorList) {
generator.cook();
TimeUnit.SECONDS.sleep(2);
}
}
}
Takashi! Le petit déjeuner était prêt!
Montée! Le petit déjeuner était prêt!
Takashi! Le déjeuner était prêt!
Montée! Le déjeuner était prêt!
Takashi! Le dîner était prêt!
Montée! Le dîner était prêt!
[Introduction aux modèles de conception appris dans le langage Java augmenté et révisé](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82% E7% 89% 88Java% E8% A8% 80% E8% AA% 9E% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 87% E3% 82% B6% E3% 82% A4% E3% 83% B3% E3% 83% 91% E3% 82% BF% E3% 83% BC% E3% 83% B3% E5% 85% A5% E9% 96% 80-% E7% B5 % 90% E5% 9F% 8E-% E6% B5% A9 / dp / 4797327030 / ref = sr_1_1? Ie = UTF8 & qid = 1515328473 & sr = 8-1 & mots-clés =% E3% 83% 87% E3% 82% B6% E3% 82 % A4% E3% 83% B3% E3% 83% 91% E3% 82% BF% E3% 83% BC% E3% 83% B3)
・ Une collection de modèles de conception trouvés sur GitHub java-design-patterns