我有一些代碼,看起來像:在這種情況下,我如何糾正功能嫉妒?
class Parent {
private Intermediate intermediateContainer;
public Intermediate getIntermediate();
}
class Intermediate {
private Child child;
public Child getChild() {...}
public void intermediateOp();
}
class Child {
public void something();
public void somethingElse();
}
class Client {
private Parent parent;
public void something() {
parent.getIntermediate().getChild().something();
}
public void somethingElse() {
parent.getIntermediate().getChild().somethingElse();
}
public void intermediate() {
parent.getIntermediate().intermediateOp();
}
}
據我所知,是「功能羨慕」代碼味道的一個例子。問題是,解決它的最好方法是什麼?我的第一直覺就是把三種方法對父:
parent.something();
parent.somethingElse();
parent.intermediateOp();
...但我覺得這樣的重複代碼,雜波父類的API(這已經是相當繁忙)。
我想存儲getIntermediate()和/或getChild()的結果,並保留我自己對這些對象的引用嗎?
謝謝!所有這些問題的答案都是有幫助的,所以我upvoted他們 – RMorrisey 2010-05-26 00:43:01