package designPatternExtensions;
import models.objectOrientedTransfer.*;
import java.util.ArrayList;
//メモ
//https://github.com/iluwatar/java-design-patterns/tree/master/abstract-factory
public class AbstractFactory {
public static DataTransferDesign create() throws IllegalRelationException {
ObjectNode elfCastle = new ObjectNode("ElfCastle");
ObjectNode app = new ObjectNode("App");
ObjectNode data = new ObjectNode("String");
Relation transferRelation = new Relation(elfCastle, app, MultiplicityValue.OneToOne);
DataTransferContext context = new DataTransferContext(
new ArrayList<>(), transferRelation, data, "description", PushPullValue.PULL
);
DataTransferDesign design = new DataTransferDesign(context);
ObjectNode elfKingdomFactory = new ObjectNode("ElfKingdomFactory");
MediatorInsertion mi = new MediatorInsertion(app, elfCastle, elfKingdomFactory);
design.addMediatorInsertion(mi);
DependencyInversion di = new DependencyInversion(
elfKingdomFactory, new InterfaceNode(elfKingdomFactory, "KingdomFactory"), app
);
design.addDependencyInversion(di);
return design;
}
}