package designPatternExtensions;
import models.objectOrientedTransfer.*;
//https://github.com/iluwatar/java-design-patterns/tree/master/proxy
//WizardTowerProxyで行っている人数制御がない
public class Proxy {
public static DataTransferDesign create() throws IllegalRelationException {
ObjectNode ivoryTower = new ObjectNode("IvoryTower");
ObjectNode client = new ObjectNode("Client");
ObjectNode data = new ObjectNode("Wizard");
Relation transferRelation = new Relation(client, ivoryTower, MultiplicityValue.OneToOne);
DataTransferContext context = new DataTransferContext(
new java.util.ArrayList<>(), transferRelation, data, "wizard", PushPullValue.PUSH
);
DataTransferDesign design = new DataTransferDesign(context);
ObjectNode proxy = new ObjectNode("WizardTowerProxy");
MediatorInsertion mi = new MediatorInsertion(client, ivoryTower, proxy);
design.addMediatorInsertion(mi);
InterfaceNode wizardTower = new InterfaceNode(proxy, "WizardTower");
DependencyInversion di = new DependencyInversion(proxy, wizardTower, client);
design.addDependencyInversion(di);
DependencyInversion di2 = new DependencyInversion(ivoryTower, wizardTower);
design.addDependencyInversion(di2);
return design;
}
}