Hirdetés

Keresés

Új hozzászólás Aktív témák

  • modder
    aktív tag

    Megpróbálom akkor még egyszer. :R
    Van három osztály:
    A osztály
    B osztály
    C osztály

    A B osztály a háttérben fut, ha kap Blueotoothon keresztül egy XML fájlt akkor C osztályból létrehoz egy új példányt, ami az XML-t parseolja. A C osztály az eredményt egy interfészen keresztül adja át az A osztálynak.

    Ha A osztályból példányosítanám a C osztályt, akkor tudom hogy kellene megoldani(pl a C osztály konstruktorában átvenni az A osztály által implementált interfészt, majd azon keresztül visszaüzenni).
    De mivel itt B osztályból példányosítok ezért nem tudom, hogy hogyan kellene.

    Remélem így világosabb :R .

    Igen, itt a kérdés, hogy A osztályt ki példányosítja. Ha B, vagy már egyébként létre van hozva, és B ismeri, akkor:

    public interface A {
    public void processObject(Object o);
    }

    public interface C {
    /**
    * processXml(String xml, A a) feldolgozza az xml-t, és az eredményt átadja
    * a-nak A#processObject(Object o)-n keresztül
    */
    public void processXml(String xml, A a);
    }

    class B {
    A a;
    public void newXml( String xml ) {
    new C().processXml(xml,a);
    }
    }

    public class CImpl {
    public void processXml(String xml, A a) {
    Object o = parseXml(xml);
    a.processObject(o);
    }
    }

    Ha C-ben még szükséged van A-ra, akkor a C konstruktorában is átadhatod, de ez így tisztább, jobban látni a függőséget. Az eredeti kérdés interfészekre vonatkozott. Azt nem tudod meghatározni interfészekkel, hogy a C#processXml() implementációja mi legyen, ezért JavaDoc-ban szokták definiálni, hogy miylen további felelőssége van egy metódusnak.

  • Superhun
    addikt

    Megpróbálom akkor még egyszer. :R
    Van három osztály:
    A osztály
    B osztály
    C osztály

    A B osztály a háttérben fut, ha kap Blueotoothon keresztül egy XML fájlt akkor C osztályból létrehoz egy új példányt, ami az XML-t parseolja. A C osztály az eredményt egy interfészen keresztül adja át az A osztálynak.

    Ha A osztályból példányosítanám a C osztályt, akkor tudom hogy kellene megoldani(pl a C osztály konstruktorában átvenni az A osztály által implementált interfészt, majd azon keresztül visszaüzenni).
    De mivel itt B osztályból példányosítok ezért nem tudom, hogy hogyan kellene.

    Remélem így világosabb :R .

    Az A osztályt ki példányosítja?

Új hozzászólás Aktív témák