zoukankan      html  css  js  c++  java
  • 11.20

    中介者模式:

    定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。

    中介者模式是一种对象行为型模式,其主要优点如下。

    降低了对象之间的耦合性,使得对象易于独立地被复用。

    将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。

    其主要缺点是:当同事类太多时,中介者的职责将很大,它会变得复杂而庞大,以至于系统难以维护。
    举例(通过中介卖方)

     抽象中介者

    复制代码
    public interface Mediator {
     
        void register(Colleague colleague); // 客户注册
     
        void relay(String from, String to,String ad); // 转发
     
    }
    复制代码

    具体中介者

    复制代码
    public class ConcreteMediator implements Mediator {
     
        private List<Colleague> colleagues = new ArrayList<Colleague>();
     
        @Override
        public void register(Colleague colleague) {
            // TODO Auto-generated method stub
            if (!colleagues.contains(colleague)) {
                colleagues.add(colleague);
                colleague.setMedium(this);
            }
        }
     
        @Override
        public void relay(String from, String to, String ad) {
            // TODO Auto-generated method stub
            for (Colleague cl : colleagues) {
     
                String name = cl.getName();
                if (name.equals(to)) {
                    cl.receive(from, ad);
                }
     
            }
     
        }
     
    }
    复制代码

    抽象同事类

    复制代码
    public abstract class Colleague {
     
        protected Mediator mediator;
        protected String name;
     
        public Colleague(String name) {
            this.name = name;
        }
     
        public void setMedium(Mediator mediator) {
     
            this.mediator = mediator;
     
        }
     
        public String getName() {
            return name;
        }
     
        public abstract void Send(String to, String ad);
     
        public abstract void receive(String from, String ad);
     
    }
    复制代码

    具体同事类

    复制代码
    public class Buyer extends Colleague {
     
        public Buyer(String name) {
     
            super(name);
     
        }
     
        @Override
        public void Send(String to, String ad) {
            // TODO Auto-generated method stub
            mediator.relay(name, to, ad);
        }
     
        @Override
        public void receive(String from, String ad) {
            // TODO Auto-generated method stub
            System.out.println(name + "接收到来自" + from + "的消息:" + ad);
        }
     
    }
    复制代码
  • 相关阅读:
    2016.5.15——leetcode:Number of 1 Bits ,
    2016.5.14——leetcode-HappyNumber,House Robber
    记录学习过程
    npm 模块安装机制简介
    搭建Vue.js开发环境(window10)
    pwd 显示当前所在的工作路径
    Lucene 6.5.0 入门Demo
    java.lang.UnsupportedClassVersionError
    window.onload 和 $(document).ready(function(){}) 的区别
    plsql + 客户端 连接oracle数据库
  • 原文地址:https://www.cnblogs.com/1329197745a/p/15577050.html
Copyright © 2011-2022 走看看