Если агрегации достаточно или я должен подключить агрегированные классы тоже - PullRequest
0 голосов
/ 06 января 2019

У меня есть вопрос. Если ClassA агрегирует ClassB и ClassC, а ClassA вызывает метод класса C, в котором он использует атрибуты объекта ClassB (передаваемые аргументами), следует ли мне подключить ClassB и ClassC или достаточно агрегирования?

Изображение например: Диаграмма UML

Реализация:

class ClassA {
    constructor() {
        this.stringA = "Hello"
        this.objB = new ClassB();
        this.objC = new ClassC();
    }
    functionA() {
        this.objB.functionB(this.stringA);
        this.objC.functionC(this.objB.intB);
    }
}

class ClassC {
    constructor() {}
    functionC(intB) {
        console.log(intB);
    }
}

class ClassB {
    constructor() {
        this.intB = 10;
    }
    functionB(stringA) {
        console.log(stringA);
    }
}

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 06 января 2019

На диаграмме вы используете композиции , а не "просто" агрегаты , что означает, что экземпляры ClassB и ClassC исчезнут, когда исчезнет экземпляр ClassA.

Цель составов и агрегатов не в том, чтобы класс вызывал метод другого класса или использовал один из его атрибутов.

Если ClassB использует атрибут ClassC (уже странно, публично ли это?), Вы можете использовать зависимость, но если вы добавляете зависимость каждый раз, когда рискуете получить зависимость между множеством классов и целью диаграммы классов на самом деле не означает, что

...