在下面的类中:
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();
为什么这个类需要调用这个方法来通知中介器启动了?这是否意味着该方法会被调用两次?一次通过此方法,然后在中介器本身中?
发布于 2014-04-26 22:49:13
中介者的目的是在同事之间传递信息。您只需将您系统中的其他同事需要了解的事情通知中介即可。
我敢说,在这个系统中,可能还有另一个名为Engine的类,它有一个也注册到中介器的start()方法。
当Ignition start方法调用mediator.ignitionTurnedOn()时,中介很可能会从其ignitionTurnedOn()方法内部调用类似getEngine().start()的内容。
可能没有任何东西在这里被调用两次。
发布于 2014-04-27 10:07:17
中介器的目的是提供高度内聚的服务,允许解耦系统的元素。就汽车而言,点火系统不需要知道所发生的事情的细节,例如,打开扼流阀、启动启动器等,因为这些细节可以根据发动机系统的类型而改变。
所以,下面是可能发生的事情:

要确定这一点,您必须查看:Ignition是如何调用的,以及Mediator.ignitionTurnedOn()实际做了什么。
https://stackoverflow.com/questions/23312236
复制相似问题