中介者模式

中介者模式就是在对象之间的关系很复杂时用,名如其人,就像租房的黑中介一样,如果每个房东都拿着很多租房者的信息很麻烦,每个租房者都要拿着很多房东的信息也麻烦,所以需要一个中介来拿着这些信息,租房者只需要发出租房的请求,中介会给你介绍合适的房东,房东只需要提交房屋资料就等着中介的人带着访客看房拿钱就行了,所以租房者和房东都要拿着中介的信息,这个模式不难理解,但是中介会用收中介费,加房租等毒辣手段,所以就是他来包装租房者发的请求,中间处理了一下交给房东,比如房租500,向租房者要1000,给房东400,呵呵。
Mediator 类可以增加很多租房者和房东间的交互。
 package com.jerry.design.mediator; //租房者 abstract class Colleague { private Mediator mediator; public Mediator getMediator() { return mediator; } public Colleague(Mediator m) { mediator = m; } // 租房者发送租房消息 public abstract void sendMsg(); // 房东接到看房的消息 public void getMsg() { System.out.println("Colleague1 要看房"); } } //租房者 class Colleague1 extends Colleague { public Colleague1(Mediator m) { super(m); } @Override public void sendMsg() { System.out.println("Colleague1 要看房"); getMediator().toFangdong(this); } @Override public void getMsg() { } } //租房者 class Colleague2 extends Colleague { public Colleague2(Mediator m) { super(m); } public void getMsg(String msg) { } public void sendMsg() { System.out.println("Colleague2 要看房"); } } //房东 class Colleague3 extends Colleague { public Colleague3(Mediator m) { super(m); } public void getMsg() { System.out.println("Colleague3房东接到了看房消息 "); } public void sendMsg() { System.out.println("Colleague3房东发出了提交资料给中介的消息 "); } } abstract class Mediator { public abstract void toFangdong(Colleague sender); } class ConcreteMediator extends Mediator { private Colleague1 colleague1; private Colleague2 colleague2; private Colleague3 colleague3; @Override public void toFangdong(Colleague sender) { if(sender!=colleague3){ colleague3.getMsg(); }else{ colleague3.sendMsg(); } } public Colleague1 getColleague1() { return colleague1; } public void setColleague1(Colleague1 colleague1) { this.colleague1 = colleague1; } public Colleague2 getColleague2() { return colleague2; } public void setColleague2(Colleague2 colleague2) { this.colleague2 = colleague2; } public Colleague3 getColleague3() { return colleague3; } public void setColleague3(Colleague3 colleague3) { this.colleague3 = colleague3; } } // 测试类 public class Test { public static void main(String[] args) { ConcreteMediator mediator = new ConcreteMediator(); Colleague1 colleague1 = new Colleague1(mediator); Colleague2 colleague2 = new Colleague2(mediator); Colleague3 colleague3 = new Colleague3(mediator); mediator.setColleague1(colleague1); mediator.setColleague2(colleague2); mediator.setColleague3(colleague3); mediator.toFangdong(colleague3); mediator.toFangdong(colleague1); mediator.toFangdong(colleague2); } } 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值