Programmierung mit dem Muster "Chain of Responsibility" von Entwurfsmustern. Wenn der Mann, der das Argument abgegeben hat, es mag, wird es verarbeitet, wenn nicht, wird es der nächsten Frau vorgestellt. Es ist okay, wenn es keiner Frau gefällt! Jeder mag Enako, also gibt es eine helfende Hand. Es besteht jedoch eine hohe Wahrscheinlichkeit des Betrugs. Ich benutze Java 8.
DesignPattern → Projektname |---src | --- ChainOfResponsibility → Paketname | --- Man.java (Klasse, die männliche Größe und Gewicht hält) | --- Woman.java (Klasse zum Bilden einer Frauenkette) | --- EveryoneLike.java (Eine Klasse, die jeder mag) | --- WeightCare.java (Klasse, die sich nur um das Gewicht kümmert) | --- HeightCare.java (Klasse, die sich nur um die Höhe kümmert) | --- NoOneLike.java (Klasse, die niemand mag) | --- Main.java (Klasse, die die Hauptverarbeitung für die Programmausführung ausführt)
Man.java
package ChainOfResponsibility;
public class Man {
//Name
private String name;
//Höhe
private int height;
//Körpergewicht
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 + "Höhe:" + height + "cm Gewicht:" + 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) {
//Niemand mag Mio
Woman mio = new NoOneLike("Mio");
//Ich mag Ahorn, wenn Sie ein Mann mit einem Gewicht von 50 kg oder weniger sind
Woman kaede = new WeightCare("Ahorn", 50);
//Nagisa mag Männer über 170 cm groß
Woman nagisa = new HeightCare("Nagisa", 170);
//Jeder mag 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 ist 150 cm groß und wiegt 47 kg
ManList.add(new Man("Hiroto", 150, 47));
//Naohiro ist 173 cm groß und wiegt 57 kg
ManList.add(new Man("Naohiro", 173, 57));
//Daisuke ist 160 cm groß und wiegt 64 kg
ManList.add(new Man("Daisuke", 160, 64));
}
}
[Ahorn] likes [Hiroto Höhe: 150cm Gewicht: 47kg].
[Nagisa] likes [Naohiro Größe: 173cm Gewicht: 57kg].
[Enako] likes [Daisuke Höhe: 160cm Gewicht: 64kg].
[Einführung in Entwurfsmuster, die in der erweiterten und überarbeiteten Java-Sprache gelernt wurden](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 & keywords =% E3% 83% 87% E3% 82% B6% E3% 82 % A4% E3% 83% B3% E3% 83% 91% E3% 82% BF% E3% 83% BC% E3% 83% B3)
・ Artikel, die mit Designmustern interessant waren Dramatisch vor ◯ After-Sales-Designmuster ~ Fassadenmuster ~