मेरे पास कुछ कोड है जो इस तरह दिखता है:मैं इस मामले में फीचर ईर्ष्या कैसे सही करूं?
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();
... लेकिन मुझे यह डुप्लीकेट कोड पसंद है, और माता-पिता वर्ग (जो पहले से ही व्यस्त है) के एपीआई को अव्यवस्थित करता है।
क्या मैं getIntermediate(), और/या getChild() के परिणाम को संग्रहीत करना चाहता हूं, और इन ऑब्जेक्ट्स में अपना खुद का संदर्भ रखना चाहता हूं?
धन्यवाद! इन सभी उत्तरों में मददगार थे, इसलिए मैंने उन्हें – RMorrisey