que tienen un código que se parece a:¿Cómo corrijo la envidia de la característica en este caso?
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();
}
}
entiendo que es un ejemplo de la "función de la envidia" olor código. La pregunta es, ¿cuál es la mejor manera de solucionarlo? Mi primer instinto es poner los tres métodos en los padres:
parent.something();
parent.somethingElse();
parent.intermediateOp();
... pero siento que esto duplica código y desordena la API de la clase padre (que ya es bastante ocupado).
¿Quiero guardar el resultado de getIntermediate(), y/o getChild(), y mantener mis propias referencias a estos objetos?
¡Gracias! Todas estas respuestas fueron útiles, así que las subí – RMorrisey