В следующем классе:
public class Ignition {
private EngineManagementSystem mediator;
private boolean on;
public Ignition(EngineManagementSystem mediator) {
this.mediator = mediator;
on = false;
mediator.registerIgnition(this);
}
public void start() {
on = true;
mediator.ignitionTurnedOn();
System.out.println("Ignition turned on");
}
public void stop() {
on = false;
mediator.ignitionTurnedOff();
System.out.println("Ignition turned off");
}
public boolean isOn() {
return on;
}}
Я не уверен в причине этих строк кода, например:
mediator.ignitionTurnedOn();
Почему этот класс должен вызвать этот метод, чтобы сообщить посреднику, что зажигание включено? означает ли это, что метод вызывается дважды? Один раз этим методом, а затем внутри самого посредника?
Целью посредника является предоставление высокосвязных услуг, которые позволяют отделить элементы системы. Что касается автомобиля, системе зажигания не нужно будет знать подробные сведения о том, что происходит, например, Дроссель открывается, запускается Starter и т.д., Поскольку эти данные могут меняться в зависимости от типа системы Engine.
Итак, вот что произойдет:
Чтобы точно знать, вам нужно будет увидеть, как :Ignition
вызывается :Ignition
и что делает Mediator.ignitionTurnedOn()
.
Целью посредника является передача информации между коллегами. Вам нужно только сообщить посреднику о вещах, о которых должны знать другие коллеги в вашей системе.
Я бы рискнул, что в этой системе есть, возможно, еще один класс, который, возможно, называется Engine
которого есть метод start()
также зарегистрированный посредником.
Когда метод запуска Ignition
вызывает mediator.ignitionTurnedOn()
, скорее всего, медиатор затем вызывает нечто вроде getEngine().start()
из своего метода ignitionTurnedOn()
.
Наверное, здесь ничего не вызывается.