Java 中介设计模式:为什么类必须通知中介他们的行为?
在以下班级:Java 中介设计模式:为什么类必须通知中介他们的行为?,java,design-patterns,methods,mediator,Java,Design Patterns,Methods,Mediator,在以下班级: public class Ignition { private EngineManagementSystem mediator; private boolean on; public Ignition(EngineManagementSystem mediator) { this.mediator = mediator; on = false; mediator.registerIgnition(th
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()
为什么这个类需要调用这个方法来通知中介点火开关打开了?这是否意味着该方法将被调用两次?一旦使用此方法,然后在调解员内部?调解员的目的是在同事之间传递信息。您只需将系统中其他同事需要知道的事情通知调解人 我敢说,在这个系统中,可能还有另一个类叫做
Engine
,它有一个start()
方法也注册到了中介
当Ignition
start方法调用mediator.ignitionTurnedOn()
时,最有可能的情况是,中介然后从其ignitionTurnedOn()方法内部调用类似getEngine().start()
的内容
这里可能不会两次调用任何内容。中介程序的目的是提供高度内聚的服务,允许将系统的元素解耦。就汽车而言,点火系统不需要知道发生了什么的细节,例如,阻风门打开,起动机启动等,因为这些细节可能会根据发动机系统的类型而改变
下面是可能发生的情况:
要确定这一点,您必须了解如何调用:Ignition
,以及Mediator.ignitionTurnedOn()
的实际功能