Как правильно имплементировать Abstract Factory шаблон дизайна

У меня есть 2 интерфейса:

public interface Plot {
}

public interface PlotFactory {
        Plot plot();
    
    }

и класс:

class PlotFactories  {

    public PlotFactory classicDisneyPlotFactory(Character h, Character b, Character v) {

        return new ClassicDisney();
    }
}

чтоб имплементировать метод из public interface PlotFactory создал класс: public class ClassicDisney который возвращает new DisneyPlot();

public class ClassicDisney implements PlotFactory {
    @Override
    public Plot plot() {
        return new DisneyPlot();
    }
}

и создал еще класс DisneyPlot который имплементирует Plot и возвращает String в зависимости от параметров метода public PlotFactory classicDisneyPlotFactory(Character h, Character b, Character v).

public class DisneyPlot implements Plot {

    @Override
    public String toString() {

            return "A это парень. A и E молодцы. U никого из них е знает.";
    }
}

Код работает но есть одна проблема, как сделать так чтоб мне был возвращен этот же String, но если другие герои есть например B C и D, то возвращенный String будет "B это парень. B и C молодцы. D никого из них е знает.", как запрашивается в тесте

@Test
    public void classicDisneyPlotFactory() {

        PlotFactory mermaidPlotFactory = factories.classicDisneyPlotFactory(() -> "A", () -> "E", () -> "U");
        PlotFactory beautyAndTheBeastPlotFactory = factories.classicDisneyPlotFactory(() -> "B", () -> "D", () -> "G");
        PlotFactory lionKingPlotFactory = factories.classicDisneyPlotFactory(() -> "S", () -> "N", () -> "T");

        assertEquals(
                "A это парень. A и E молодцы. U никого из них е знает.",
                mermaidPlotFactory.plot().toString()
        );
        assertEquals(
                "B это парень. B и D молодцы. G никого из них е знает.",
                beautyAndTheBeastPlotFactory.plot().toString()
        );
        assertEquals(
                "S это парень. S и N молодцы. T никого из них е знает.",
                lionKingPlotFactory.plot().toString()
        );
    }

Как я понимаю чтоб все вот три теста проходили надо создать if-else в классе class DisneyPlot, но не понимаю что с чем сравнивать нужно.


Ответы (0 шт):