首页 > 编程 > Java > 正文

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

2019-11-26 15:28:01
字体:
来源:转载
供稿:网友

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

如下图所示:

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

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 consumerI am a producer
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表