что если я захочу сделать что-то для inst из класса Test2, как бы я это сделал?
Прежде всего вы должны научить класс Test2
чему Test1
is.
public class Test2
{
public doSomething()
{
inst.fireTest();
}
public Test2(Test1 inst)
{
this.inst = inst;
}
private Test1 inst;
}
Затем научите объект inst2
, что такое inst
.
public class Test1
{
public static void main(String[] args)
{
Test1 inst = new Test1();
Test2 inst2 = new Test2(inst); // <- new code
inst2.doSomething(); // <- new code
}
public void fireTest()
{
System.out.println("fireTest");
}
public Test1()
{
}
}
Вам нужен только один главный, чтобы начать показ.Поток контроля все еще может проходить через другие объекты.Но на данный момент я бы не назвал эти независимые тесты.Я использовал это имя только для соответствия вашему коду.
То, на что вы смотрите, называется передачей ссылок.Причудливый термин для него - Инъекция чистой зависимости *.Основной шаблон заключается в построении графа объектов в main.После того, как это будет сделано, вызовите один метод для одного объекта, чтобы все началось.
В основном вы строите каждый объект, который будет жить так же долго, как ваша программа.Здесь вы не найдете построенных объектов, таких как метки времени.Хорошее практическое правило - создавать каждый из этих долгоживущих объектов, прежде чем выполнять какую-либо реальную работу.Поскольку они знают друг о друге, они могут передавать поток управления взад и вперед между ними.Там много энергии, и если ее не использовать должным образом, это может запутать.Посмотрите на Архитектурные паттерны , чтобы упростить эту простоту.
Принцип, который здесь следует, состоит в том, чтобы отделить использование от конструкции .После этого вы можете легко изменить свое мнение о том, что говорит с чем в одном месте.Приятно, когда изменение дизайна не заставляет вас переписывать все.