【发布时间】:2016-07-29 13:29:03
【问题描述】:
如果我有一个对象的 ArrayList,那么任何时候我需要在 ArrayList 的成员上调用任何方法,我都需要这样做:
list.get(i).doSomething();
这看起来像是违反了得墨忒耳法则。我看不出有什么办法可以解决这个问题。这很好还是我应该重新考虑我是如何做这样的事情的。 ArrayList 是定义为忽略得墨忒耳法则的对象吗?
【问题讨论】:
-
您能解释一下您是如何看待违反得墨忒耳法则的吗?
-
也许描述更多你想做的事?我在这里没有看到问题,这不像您要连续调用 10 个吸气剂。
-
我意识到这不是一个严重的违规行为,但它仍然看起来像是代码异味。这是一个 LoD 违规,因为我正在从 ArrayList 中检索一个对象,然后在检索到的对象上调用一个方法。从技术上讲,我应该做类似 list.callSomethingOn(i) 的事情来维护得墨忒耳法则,但这似乎也是错误的
标签: java arraylist refactoring law-of-demeter