调解员设计模式:为什么课程必须告知调解员他们的行为?

时间:2014-04-26 14:25:48

标签: 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(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();

为什么这个类需要调用此方法来通知调解员点火开关?这是否意味着该方法被调用两次?一旦通过这种方法然后在调解员本身内?

2 个答案:

答案 0 :(得分:1)

调解员的目的是在同事之间传递信息。您只需告知调解员系统中其他同事需要了解的事项。

我敢说,在这个系统中,可能还有另一个类叫Engine,它也有一个start()方法也注册了中介。

Ignition start方法调用mediator.ignitionTurnedOn()时,调解器很可能会从getEngine().start()方法中调用ignitionTurnedOn()之类的内容。

这里可能没有调用过两次。

答案 1 :(得分:1)

调解员的目的是提供高度内聚的服务,允许解耦系统的元素。就汽车而言,点火系统不需要知道发生的事情的细节,例如,打开扼流圈,调用启动器等等,因为这些细节可能会根据发动机系统的类型而改变。

所以,可能会发生以下情况:

plantUML image

要确定,您必须了解:Ignition的调用方式以及Mediator.ignitionTurnedOn()实际执行的操作。