Pas nécessairement. "Utiliser un seul point" est inexacte résumé de la Loi de Déméter.
La Loi de Déméter décourage l'utilisation de plusieurs points lors de chaque point représente le résultat d'un autre objet, par exemple:
- Premier point est une méthode dite de ObjectA, en retournant un objet de type ObjectB
- Prochain point est une méthode uniquement disponible en ObjectB, en retournant un objet de type ObjectC
- Prochain point est une propriété disponible uniquement dans ObjectC
- à l'infini
Cependant, au moins à mon avis, la Loi de Déméter n'est pas violé si le retour de l'objet de chaque point est toujours le même type que l'original de l'appelant:
var List<SomeObj> list = new List<SomeObj>();
//initialize data here
return list.FindAll( i => i == someValue ).Sort( i1, i2 => i2 > i1).ToArray();
Dans l'exemple ci-dessus, les deux FindAll() et de Tri() retourne le même type d'objet que la liste originale. La Loi de Déméter n'est pas violé: la liste seulement parlé à ses amis proches.
Cela étant dit, pas tous couramment interfaces de violer la Loi de Déméter, juste aussi longtemps qu'ils le retour du même type que leurs appelant.