欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java設(shè)計(jì)模式之中介者模式(Mediator Pattern)簡介

 更新時(shí)間:2014年07月29日 16:12:55   投稿:shichen2014  
這篇文章主要介紹了Java設(shè)計(jì)模式之中介者模式(Mediator Pattern),需要的朋友可以參考下

Java設(shè)計(jì)模式的中介者模式是行為模式之一。定義一個(gè)中介對象來封裝系列對象之間的交互。中介者使各個(gè)對象不需要顯式地相互引用,從而使其耦合性松散,并且可以獨(dú)立地改變他們之間的交互。

如下圖所示:

生產(chǎn)者、消費(fèi)者、代理商之間的中介模式實(shí)例:

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");
  }
}

運(yùn)行結(jié)果:

hello! i am a consumer
I am a producer

相關(guān)文章

最新評論