Newer
Older
DesignCraft / src / main / java / designPatternExtensions / Observer.java
@c-okada c-okada 4 days ago 1 KB Pull用にCommit
package designPatternExtensions;

import models.objectOrientedTransfer.*;

import java.util.ArrayList;
import java.util.List;

public class Observer {

    public static DataTransferDesign create() throws IllegalRelationException {
        ObjectNode main     = new ObjectNode("Main");
        ObjectNode weather  = new ObjectNode("Weather");
        ObjectNode orcs     = new ObjectNode("Orcs");
        ObjectNode hobbits  = new ObjectNode("Hobbits");
        ObjectNode data     = new ObjectNode("WeatherType");

        List<ReferenceEdge> srcEdges = new ArrayList<>();
        ReferenceEdge srcEdge = new ReferenceEdge(main, weather, "weather", "WeatherType");
        srcEdges.add(srcEdge);

        List<ReferenceEdge> dstEdges = new ArrayList<>();
        ReferenceEdge dstEdge = new ReferenceEdge(main, orcs, "orcs", "WeatherType");
        dstEdges.add(dstEdge);

        List<Relation> relations = new ArrayList<>();
        Relation transferRelation = new Relation(srcEdges, dstEdges, MultiplicityValue.ManyToOne);
        DataTransferContext context = new DataTransferContext(
                relations, 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;
    }
}