Лучшая OOP практика для доступа к объектам внутри объектов по всему проекту - PullRequest
1 голос
/ 15 января 2020

Хорошо, так что это проблема, с которой я сталкиваюсь. Сейчас есть много способов сделать это, но мне интересно, что вы считаете «лучшей практикой»

Предположим, у нас есть структура проекта следующим образом:

Java Project:
src/
   PackageA/
      ClassA.java
   PackageB/
      ClassB.java
      ClassC.java
   Main.java

Каждый класс следует:

public class Main {
    private ClassA classA;
    private ClassB classB;
    public Main(){

    }

    public void runMainMethod(){
        //Init Objects
        classA = new ClassA();
        classB = new ClassB();

        classA.getDataFromClassC();
    }
}


public class ClassA {
    public ClassA(){

    }

    public void getDataFromClassC(){
        //Best way to get Data from classC?
    }
}


public class ClassB {
    private ClassC classC;
    public ClassB(){
        loadClassC();
    }
    private void loadClassC(){
        classC = new ClassC("ExampleName");
    }

}


public class ClassC {
    private String name;
    public ClassC(String name){
        this.name = name;
    }
    public String getNam(){
        return name;
    }

}

Мне хочется пропустить Main через каждый класс и создать метод получения в Main (для класса B), а затем другой метод получения в B (для класса C) излишним.

Особенно, если он идет глубже. Что если класс C содержит объект класса D? И я хотел получить доступ к классу D из класса A?

Может быть, я не выполняю лучшую практику для OOP?

Любая информация о том, как вы справляетесь с этим, или лучшая практика будет с благодарностью!

Вопрос2: Что делать, если вы хотите, чтобы только один класс B (возможно, потому что класс C был загружен из файла, и несколько классов B не будут синхронизированы по отношению к классу C).

Например, я хочу избежать этой проблемы:

ClassC classC = new ClassB().getClassC();
ClassC2 classC2 = new Class().getClassC();
classC.setName("C");
classC2.setName("C2);

, где оба класса имеют разные значения имен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...