java设计模式-中介者模式

什么是中介者模式:
如果一个对象系统中,各个子对象都要相互交互,形成了网状结构,这时候,我们可以定义一个对象,各个子系统的处理和交互都交给它,由它统一调度。

这里写图片描述

开发中使用的中介者模式:
1.mvc架构中的c,需要同时和m和v打交道
2.java.lang.reflect.Method#invoke()

中介者模式例子:
这里的实现的场景是,软件产品的研发流程。所以我们定义下各个部门职能

package com.javademo.pattern.mediator;

/**
 * 部门接口
 * 
 * @author liuxg
 * @date 2016年5月27日 下午9:22:21
 */
public interface Department {

    void needToDo();

}

class Research implements Department {

    @Override
    public void needToDo() {

        System.out.println("研发产品");

    }

}
class Sale implements Department {

    @Override
    public void needToDo() {

        System.out.println("卖产品");

    }

}
class Business implements Department {

    @Override
    public void needToDo() {

        System.out.println("定需求");

    }

}

中介者没有出现之前,各个部门的交流,都需要面对面的交流,我们来设计一下中介者,所有的交流和调度都由他来完成

public interface Mediator {

    void register(String dname ,Department department);
    void command(String dename);

}


/**
 * 领导充当中介者角色
 * @author liuxg
 * @date 2016年5月27日 下午9:19:29
 */
class Leader implements Mediator {

    private Map<String ,Department> map = new HashMap<String ,Department> ();


    @Override
    public void register(String dname, Department department) {
        map.put(dname, department);
    }

    @Override
    public void command(String dename) {
        if (map.get(dename) != null) {
            map.get(dename).needToDo();
        }

    }

}

客户端产品的研发流程直接就由中介者来调度了

public class Client {

    public static void main(String[] args) {

        Mediator mediator = new Leader();

        Department research = new Research();
        Department business = new Business();
        Department sale = new Sale();

        mediator.register("research", research); //将调度权交给领导
        mediator.register("business", business);
        mediator.register("sale", sale);

        mediator.command("business");//领导进行调度
        mediator.command("research");
        mediator.command("sale");

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值