【问题标题】:Mediator Design Pattern: Why do classes have to inform mediator of their behaviours?中介者设计模式:为什么类必须告知中介者他们的行为?
【发布时间】:2014-04-26 14:25:47
【问题描述】:

在下面的类中:

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();

为什么这个类需要调用这个方法来通知中介者点火已开启?这是否意味着该方法被调用了两次?一次通过这种方法,然后在调解器本身内?

【问题讨论】:

    标签: java design-patterns methods mediator


    【解决方案1】:

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

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

    Ignition start 方法调用mediator.ignitionTurnedOn() 时,中介很可能会从其ignitionTurnedOn() 方法内部调用getEngine().start() 之类的东西。

    这里可能没有调用两次。

    【讨论】:

      【解决方案2】:

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

      所以,这就是可能发生的情况:

      要确定,您必须查看:Ignition 的调用方式以及Mediator.ignitionTurnedOn() 的实际作用。

      【讨论】:

        猜你喜欢
        • 2015-02-16
        • 2022-08-21
        • 1970-01-01
        • 1970-01-01
        • 2020-07-19
        • 2012-03-02
        • 2014-10-14
        • 2021-08-18
        • 1970-01-01
        相关资源
        最近更新 更多