假設你有類似於以下(可悲的是,我不能發佈原碼):此方法調用是否違反Demeter法則?
public void foo() {
MyObject obj = getMyObject();
bar(obj);
}
public void bar(MyObject obj) {
Type type = new Type(obj.getOtherObject());
}
foo
電話bar
,通過在obj
。但不是使用obj
,而是調用getter來檢索所需的信息。這是否違反了德米特法?
它會更好寫的是這樣的:根據對Law of Demeter維基
public void foo() {
MyObject obj = getMyObject();
bar(obj.getOtherObject());
}
public void bar(MyOtherObject otherObj) {
Type type = new Type(otherObj);
}