Programmation utilisant le modèle «Chaîne de responsabilité» des modèles de conception. Si l'homme passé dans l'argument l'aime, il sera traité, sinon, il sera présenté à la femme suivante. Ce n'est pas grave si aucune femme ne l'aime! Tout le monde aime Enako, il y a donc un coup de main. Cependant, il existe une forte possibilité de tricherie. J'utilise Java 8.
DesignPattern → Nom du projet |---src | --- ChainOfResponsibility → Nom du package | --- Man.java (Classe qui contient la taille et le poids des hommes) | --- Woman.java (Classe pour faire une chaîne de femmes) | --- EveryoneLike.java (Une classe que tout le monde aime) | --- WeightCare.java (Classe qui ne se soucie que du poids) | --- HeightCare.java (Classe qui ne se soucie que de la hauteur) | --- NoOneLike.java (Classe que personne n'aime) | --- Main.java (Classe qui effectue le traitement principal pour l'exécution du programme)
Man.java
package ChainOfResponsibility;
public class Man {
//Nom
private String name;
//la taille
private int height;
//poids
private int weight;
public Man(String name, int height, int weight) {
this.name = name;
this.height = height;
this.weight = weight;
}
public String getName() {
return name;
}
public int getHeight() {
return height;
}
public int getWeight() {
return weight;
}
public String toString() {
return "[" + name + "la taille:" + height + "Poids en cm:" + weight + "kg]";
}
}
Woman.java
package ChainOfResponsibility;
public abstract class Woman {
private String name;
private Woman next;
public Woman(String name) {
this.name = name;
}
public Woman setNext(Woman next) {
this.next = next;
return next;
}
public void attackedByMan(Man man) {
if(tryLove(man)) {
like(man);
} else if (next != null) {
next.attackedByMan(man);
} else {
dislike(man);
}
}
public String toString() {
return "[" + name + "]";
}
protected abstract boolean tryLove(Man man);
protected void like(Man man) {
System.out.println(this + " likes " + man + ".");
}
protected void dislike(Man man) {
System.out.println(this + " doesn't likes " + man + ".");
}
}
EveryoneLike.java
package ChainOfResponsibility;
public class EveryoneLike extends Woman {
public EveryoneLike(String name) {
super(name);
}
@Override
protected boolean tryLove(Man man) {
return true;
}
}
HeightCare.java
package ChainOfResponsibility;
public class HeightCare extends Woman {
private int height;
public HeightCare(String name, int height) {
super(name);
this.height = height;
}
protected boolean tryLove(Man man) {
return height <= man.getHeight();
}
}
WeightCare.java
package ChainOfResponsibility;
public class WeightCare extends Woman {
private int weight;
public WeightCare(String name, int weight) {
super(name);
this.weight = weight;
}
@Override
protected boolean tryLove(Man man) {
return man.getWeight() <= weight;
}
}
NoOneLike.java
package ChainOfResponsibility;
public class NoOneLike extends Woman {
public NoOneLike(String name) {
super(name);
}
@Override
protected boolean tryLove(Man man) {
return false;
}
}
Main.java
package ChainOfResponsibility;
import java.util.ArrayList;
import java.util.List;
public class Main {
private static List<Man> ManList = new ArrayList<>();
public static void main(String[] args) {
//Personne n'aime Mio
Woman mio = new NoOneLike("Mio");
//J'aime l'érable si vous êtes un homme de 50 kg ou moins
Woman kaede = new WeightCare("Érable", 50);
//Nagisa aime les hommes mesurant plus de 170 cm
Woman nagisa = new HeightCare("Nagisa", 170);
//Tout le monde aime Enako
Woman enako = new EveryoneLike("Enako");
mio.setNext(kaede).setNext(nagisa).setNext(enako);
setMan();
for (Man man : ManList) {
mio.attackedByMan(man);
}
}
private static void setMan() {
//Hiroto mesure 150 cm et pèse 47 kg
ManList.add(new Man("Hiroto", 150, 47));
//Naohiro mesure 173 cm et pèse 57 kg
ManList.add(new Man("Naohiro", 173, 57));
//Daisuke mesure 160 cm et pèse 64 kg
ManList.add(new Man("Daisuke", 160, 64));
}
}
[Érable] likes [Hiroto Hauteur: 150 cm Poids: 47 kg].
[Nagisa] likes [Naohiro Hauteur: 173 cm Poids: 57 kg].
[Enako] likes [Daisuke Hauteur: 160 cm Poids: 64 kg].
[Introduction aux modèles de conception appris dans le langage Java amélioré 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)
・ Articles intéressants avec des motifs de conception Dramatique avant ◯ Modèle de conception après-vente ~ modèle de façade ~
Recommended Posts