欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java设计模式之中介者模式(Mediator Pattern)简介

程序员文章站 2024-02-29 16:35:58
java设计模式的中介者模式是行为模式之一。定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显式地相互引用,从而使其耦合性松散,并且可以独立地改变他们之间的...

java设计模式的中介者模式是行为模式之一。定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显式地相互引用,从而使其耦合性松散,并且可以独立地改变他们之间的交互。

如下图所示:

Java设计模式之中介者模式(Mediator Pattern)简介

生产者、消费者、代理商之间的中介模式实例:

public abstract class personcolleague
{
  protected mediator mediator;

  public mediator getmediator()
  {
    return mediator;
  }

  public void setmediator(final mediator mediator)
  {
    this.mediator = mediator;
  }

  protected abstract void message(string context);

}

public class mediator
{
  private personcolleague consumer = null;
  private producercolleague producer = null;

  public producercolleague getproducer()
  {
    return producer;
  }

  public void setproducer(final producercolleague producer)
  {
    this.producer = producer;
  }

  public personcolleague getconsumer()
  {
    return consumer;
  }

  public void setconsumer(final personcolleague consumer)
  {
    this.consumer = consumer;
  }

  public mediator()
  {
  }

  public synchronized void message(final string context)
  {
    if (consumer != null)
    {
      system.out.println(context);
    }
    else if (producer != null)
    {
      system.out.println(context);
    }
  }
}

public class consumercolleague extends personcolleague
{
  public consumercolleague(final mediator mediator)
  {
    this.mediator = mediator;
  }

  @override
  protected void message(final string context)
  {
    this.mediator.setconsumer(this);
    this.mediator.message("hello! i am a consumer");
  }
}

public class producercolleague extends personcolleague
{
  public producercolleague(final mediator mediator)
  {
    this.mediator = mediator;
  }

  @override
  protected void message(final string context)
  {
    this.mediator.setproducer(this);
    this.mediator.message(context);
  }
}

public class client
{
  public static void main(final string[] args)
  {
    final mediator mediator = new mediator();
    final personcolleague person = new consumercolleague(mediator);
    final personcolleague person1 = new producercolleague(mediator);

    person.message("i am a consumer");
    person1.message("i am a producer");
  }
}

运行结果:

hello! i am a consumer
i am a producer