package designPatternExtensions;
import models.objectOrientedTransfer.*;
import java.util.ArrayList;
//メモ
//依存性の逆転構造は再現できているが、OneToManyが使えないから再現できない?
// SubjectがObserverを記憶し(ManyToOne?PULL?)→DesignCraftが最初に登録してるものとする
// Clientから更新されたときに、Observerに通知する(OneToMany?PUSH?)→これが正解
//
public class Observer {
public static DataTransferDesign create() throws IllegalRelationException {
ObjectNode weather = new ObjectNode("Weather");
ObjectNode orcs = new ObjectNode("Orcs");
ObjectNode hobbits = new ObjectNode("Hobbits");
ObjectNode data = new ObjectNode("WeatherType");
Relation transferRelation = new Relation(weather, orcs, MultiplicityValue.OneToOne);
DataTransferContext context = new DataTransferContext(
new ArrayList<>(), transferRelation, data, "currentWeather", PushPullValue.PUSH
);
DataTransferDesign design = new DataTransferDesign(context);
DependencyInversion di1 = new DependencyInversion(orcs, new InterfaceNode(orcs, "WeatherObserver"), weather);
DependencyInversion di2 = new DependencyInversion(hobbits, new InterfaceNode(hobbits, "WeatherObserver"), weather);
design.addDependencyInversion(di1);
design.addDependencyInversion(di2);
return design;
}
}