中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
中介者模式Demo:
/** * 2018年4月8日下午11:30:55 */ package com.Designpattern; /** * @author xinwenfeng * */ public class TestMediator { /** * @param args */ public static void main(String[] args) { HouseMediator houseMediator = new HouseMediator(); BuyHousePeople buy_people = new BuyHousePeople(houseMediator);//设置中介者 SellHousePeople sell_people = new SellHousePeople(houseMediator); houseMediator.setBuy(buy_people); houseMediator.setSell(sell_people); buy_people.send("我要买那套房"); sell_people.send("ok"); } } //抽象中介者 interface MyMediator{ public void sendMessage(String message,String from); } //抽象消息收发者 abstract class MyPeople{ protected MyMediator mediator;//只知道中介者 public MyPeople(MyMediator mediator) { this.mediator = mediator; } } class BuyHousePeople extends MyPeople{ public BuyHousePeople(MyMediator mediator) { super(mediator); } public void send(String message) { System.out.println("买人的人说:"+message); mediator.sendMessage(message,"BUY"); } public void receive(String message) { System.out.println("买人的人收到消息:"+message); } } class SellHousePeople extends MyPeople{ public SellHousePeople(MyMediator mediator) { super(mediator); } public void send(String message) { System.out.println("出售的人说:"+message); mediator.sendMessage(message,"SELL"); } public void receive(String message) { System.out.println("出售的人收到消息:"+message); } } class HouseMediator implements MyMediator{ private BuyHousePeople buy;//持有每个对象 private SellHousePeople sell; public void setBuy(BuyHousePeople buy) { this.buy = buy; } public void setSell(SellHousePeople sell) { this.sell = sell; } @Override public void sendMessage(String message,String from) {//中转消息 switch(from) { case "BUY": if(null != sell) { sell.receive(message); } break; case "SELL": if(null != buy) { buy.receive(message); } break; } } }
结果: