在下面的类中:
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
复制相似问题