Я не вижу здесь нарушения.
Закон Деметры, по идее, предполагает, что сущность знает только о своих соседях, а не о незнакомцах, поэтому, если A
что-то нужно от C
, она должна поговорить с B
, чтобы получить это, и не идти дальше.
Я бы не стал называть List
"соседом" применительно к этой концепции. Это объект, управляющий структурой данных, которую вы можете использовать в своей программе. Таким образом, Object
, которые содержит ваш список, будут считаться B
к вашему A
.
Если бы List
был реальной сущностью, определенной в вашей программе, вы могли бы быть правы в этом случае. Было бы более разумно, если бы у вашего List
был метод, который вызывает ваш Object
для выполнения некоторой логики (как вы сказали в комментарии, list.callSomethingOn(i)
).
Если этот конкретный экземпляр List
является центральным в логике вашей программы, и вы непреклонны в соблюдении закона, вы можете использовать «Декоратор» для List
, который добавляет дополнительные методы для работы с содержащимися Object
.
person
Zircon
schedule
29.07.2016