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

  • 相关阅读:
    MATLAB仿真学习笔记(一)
    SolidWorks学习笔记(一)
    机械制造技术学习笔记(七)
    基于MATLAB的多功能语音处理器
    MATLAB图形界面设计(下)
    36、如何避免僵尸进程?
    37、局部性原理你知道吗?主要有哪两大局部性原理?各自是什么?
    35、 守护进程、僵尸进程和孤儿进程
    32、什么是快表,你知道多少关于快表的知识?
    30、终端退出,终端运行的进程会怎样?31、如何让进程后台运行
  • 原文地址:https://www.cnblogs.com/itTeacher/p/2805286.html
Copyright © 2011-2022 走看看