zoukankan      html  css  js  c++  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

  • 相关阅读:
    Android获取View对应的Bitmap
    Android按需添加Google Play服务
    Android自定义View的构造函数
    两个Fragment之间如何传递数据
    SmartImageView
    onSingleTapUp()和onSingleTapConfirmed()的区别
    Android Fragment add/replace以及backstack
    InputStream与InputStreamReader的区别
    Android手动签名
    使用后台服务数据更新UI
  • 原文地址:https://www.cnblogs.com/itTeacher/p/2805286.html
Copyright © 2011-2022 走看看