Без обсуждения достоверности фактической структуры объекта отношения Car
, Break
и Speed
, этот подход имеет одну незначительную проблему: он может быть в недопустимых состояниях.
Если -что-то идет не так, возможно в этой настройке, что Car
экземпляр # 1 имеет Break
экземпляр # 2, который принадлежит Car
экземпляру # 3.Общая проблема с двусвязными списками - сама архитектура допускает недопустимые состояния.Конечно, тщательный выбор модификатора видимости и хорошая реализация функций могут гарантировать, что этого не произойдет.И когда это будет сделано и безопасно, вы перестанете изменять его, возьмете его в качестве «черного ящика» и просто используете его, таким образом исключая вероятность его облажания.
Но я лично рекомендую избегатьархитектуры, которые допускают недопустимые состояния для высокого уровня, постоянно поддерживаемый код.Двусвязный список - это код низкого уровня, который, скорее всего, не потребует никаких изменений кода, как никогда.Можете ли вы сказать, что о ваших Car
, Break
и Speed
?
Если бы у Car
были Break
и Speed
, а Break
и Speed
не знали быиз их "владения Car
", было бы невозможно сделать и недействительным состояние.Конечно, это может не подходить к конкретной ситуации.