个人博客
http://www.milovetingting.cn
中介者模式
中介者模式也称为调解者模式或调停模式。
模式定义
中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显影响。
使用场景
当对象间交互操作很多且每个对象的行为操作都依赖彼此时,为防止在修改一个对象的行为时,同时涉及修改很多其他对象的行为。可采用中介者模式来解决耦合的问题。将对象间多对多关系变成一对多的问题。
简单使用
定义Mediator
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   | public abstract class Mediator {
  	public void handleMessage(Customer customer) { 		if (customer instanceof Seller) { 			sendMessageToBuyer(); 		} else if (customer instanceof Buyer) { 			sendMessageToSeller(); 		} 	}
  	public abstract void sendMessageToSeller();
  	public abstract void sendMessageToBuyer();
  }
  | 
 
定义Customer
1 2 3 4 5 6 7 8 9 10 11
   | public abstract class Customer {
  	protected Mediator mediator;
  	public Customer(Mediator mediator) { 		this.mediator = mediator; 	} 	 	public abstract void action();
  }
  | 
 
定义Mediator实现类
1 2 3 4 5 6 7 8 9 10 11 12 13
   | public class MediatorImpl extends Mediator {
  	@Override 	public void sendMessageToSeller() { 		System.out.println("转发Buyer消息给Seller"); 	}
  	@Override 	public void sendMessageToBuyer() { 		System.out.println("转发Seller消息给Buyer"); 	}
  }
  | 
 
定义Customer实现类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
   | public class Buyer extends Customer {
  	public Buyer(Mediator mediator) { 		super(mediator); 	}
  	@Override 	public void action() { 		mediator.handleMessage(this); 	}
  }
  public class Seller extends Customer {
  	public Seller(Mediator mediator) { 		super(mediator); 	}
  	@Override 	public void action() { 		mediator.handleMessage(this); 	}
  }
  | 
 
调用
1 2 3 4 5 6 7 8 9 10 11
   | public class Main {
  	public static void main(String[] args) { 		MediatorImpl mediator = new MediatorImpl(); 		Buyer buyer = new Buyer(mediator); 		Seller seller = new Seller(mediator); 		buyer.action(); 		seller.action(); 	}
  }
  | 
 
输出结果
1 2
   | 转发Buyer消息给Seller 转发Seller消息给Buyer
   |