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

原文地址:https://www.cnblogs.com/itTeacher/p/2805286.html