🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
中介者模式(Mediator):主要用来降低类与类之间的耦合的,因为如果类与类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。 ##一、uml建模: ![](https://box.kancloud.cn/2016-02-19_56c7196f4a941.jpg) ##二、代码实现 ~~~ /** * 中介者模式(Mediator):主要用来降低类与类之间的耦合的,因为如果类与类之间有依赖关系的话, * * 不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。 * * 示例:下面以房屋(出租)中介为例 */ interface Mediator { void createMediator(); void recommendHouse(); } /** * 咱(User)让中介帮我们推荐房子 * * 所以咱需要持有一个中介实例 */ abstract class User { private Mediator mediator; public User(Mediator mediator) { this.mediator = mediator; } public Mediator getMediator() { return mediator; } public abstract void selectHouse(); } class ZhangSan extends User { public ZhangSan(Mediator mediator) { super(mediator); // TODO Auto-generated constructor stub } @Override public void selectHouse() { System.out.println("张三在选房子..."); } } class LiSi extends User { public LiSi(Mediator mediator) { super(mediator); // TODO Auto-generated constructor stub } @Override public void selectHouse() { System.out.println("李四在选房子..."); } } /** * 房屋中介:中介向要找房子的那些人推荐房子,由他们选择自己想要的房子。 * * 因此中介得持有那些实例,才有可能把房子租出去。 */ class MyMediator implements Mediator { private User zhangsan; private User lisi; public User getZhangsan() { return zhangsan; } public User getLisi() { return lisi; } @Override public void createMediator() { zhangsan = new ZhangSan(this); lisi = new LiSi(this); } /** * 中介向要找房子的那些人推荐房子,由他们选择自己想要的房子 */ @Override public void recommendHouse() { zhangsan.selectHouse(); lisi.selectHouse(); } } /** * 客户端测试类 * * @author Leo */ public class Test { public static void main(String[] args) { Mediator mediator = new MyMediator(); mediator.createMediator(); mediator.recommendHouse(); } } ~~~ ##三、总结 中介者模式只需关心和Mediator类的关系,具体类与类之间的关系及调用交给Mediator就行。