我有一些代码,看起来像:在这种情况下,我如何纠正功能嫉妒?
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