
Сообщение от
ct0r
У нас есть класс и его функция-друг. Мы даем права функции-другу на вызов только какой-то одной функции-члена класса. Но эта функция-член класса имеет доступ ко всем данным класса и может их изменять. Поэтому исходная функция-друг может таким образом косвенно изменить любые данные класса. Так не проще ли не заморачиваться и изначально ей все позволить?
Да суть понятна, хотя речь там вроде была про членны данные.
Одно дело позволять все, а другое дело позволять все, но через оговоренный метод
(интерфейс).

Сообщение от
ct0r
Но по моему мнению, там класс DependencyManager - лишний

Сообщение от
ct0r
Но по моему мнению, там класс DependencyManager - лишний. Все это может делаться классом Graph.
Я делал так изначально, но если учесть что будет еще код к примеру для переривоки итп... получается захламление.
А так задача "связей" выделена в отдельный объект и Graph не нагружен задачей поддержки связей.

Сообщение от
ct0r
И еще: более низкоуровневые компоненты не должны как-то обращаться или зависеть от вышестоящих
Ну так это суть сильносвязных объектов, тут априори иначе нельзя ибо модель разваливается.
Как к примеру может сущестовать дуга без вершин? Кроме того удаление ребра должно "оповещать" вершину о своем удалении.
Но мне мой код все равно не нравится хоть с менежером связей хоть без.
Тут только три объекта, а что когда их будет значительно больше и связи будут нести более сложный характер?
Вероятно с этим можно только смирится.