首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >中介者设计模式:为什么类必须通知中介者他们的行为?

中介者设计模式:为什么类必须通知中介者他们的行为?
EN

Stack Overflow用户
提问于 2014-04-26 22:25:48
回答 2查看 82关注 0票数 1

在下面的类中:

代码语言:javascript
运行
复制
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();

为什么这个类需要调用这个方法来通知中介器启动了?这是否意味着该方法会被调用两次?一次通过此方法,然后在中介器本身中?

EN

回答 2

Stack Overflow用户

发布于 2014-04-26 22:49:13

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

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

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

可能没有任何东西在这里被调用两次。

票数 1
EN

Stack Overflow用户

发布于 2014-04-27 10:07:17

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

所以,下面是可能发生的事情:

要确定这一点,您必须查看:Ignition是如何调用的,以及Mediator.ignitionTurnedOn()实际做了什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23312236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档