Zależności pomiędzy klasami

0

Witam,

Załóżmy, że klasa B jest okienkiem, za pomocą którego można wybrać plik z dysku, a klasa C jest "drzewkiem", które tworzone jest na podstawie wybranego pliku. Powyższe klasy wywoływane są w klasie A, która pozwala na "komunikację" pomiędzy klasami B i C. Czy ta wspomniana "komunikacja" może być zrealizowana w sposób jaki przedstawiłem poniżej czy robi się to całkiem inaczej.

public class KlasaA {
    
    KlasaB kB = new KlasaB(this);
    KlasaC kC = new KlasaC(this);

    public KlasaA(){
        
    }
    
    public void OdczytajPlik(String path){
        kC.ReadFile(path);
    }
}

//Klasa pobierająca ścieżkę do pliku
class KlasaB {
    
    KlasaA kA;
    
    public KlasaB(KlasaA a){
        kA = a;
    }
    
    public void getFilePath(){
        String path = "";
        //otwiera się okienko z wyborem pliku itd.
        //wykonuje jakieś operacje
        //do zmiennej path zapisuje scieżkę
        
        kA.OdczytajPlik(path);
    }
}

//Klasa odczytująca plik
class KlasaC {
    
    KlasaA kA;
    
    public KlasaC(KlasaA a){
        kA = a;
    }
    
    public void ReadFile(String path){
        //czyta plik
    }
}
1

Coś tu masz mocno pod górkę. Skoro klasa B korzysta z C za pośrednictwem A to można A wyeliminować z takiej zależności. Nie będzie ona tam potrzebna. Co innego jeżeli chcesz by klasa A była przekaźnikiem pomiędzy B i C.

class A{
    private B b; 
    private C c; 
     
    void flow(){
          File f = b.getFile();// metoda otwiera okno wyboru pliku i zwraca wybrany plik 
          c.readFile(f); // metoda odczytuje dane z pliku
    }

}

To coś powyżej jest bardzo prymitywnym rozwiązaniem w stylu wzorca MVC. A to kontroler, B to model, C to widok (UI w tym przypadku jest wyprodukowane drzewo, a konsumentem jakiś kolejny obiekt).

1 użytkowników online, w tym zalogowanych: 0, gości: 1