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

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 consumer

I am a producer

以上是 Java设计模式之中介者模式(Mediator Pattern)简介 的全部内容, 来源链接: utcz.com/p/207202.html

回到顶部