中介者模式(Mediator Pattern)就是用一个中介类将多个对象和类之间的交互全部放到该类中来处理,这样使得对象之间不需要显式的相互通信,降低代码的耦合性。也属于行为型模式。
在MVC模式中,Controller就是Model和View的中介类。
我们传入不同的model对象到controller,然后返回不同的View。
代码实现:
一、创建Controller、Model、View对象
packagecom.xing.design.mediator; /*** 中介类* @author xing*/publicclassController { publicstaticvoidgo(Modelmodel) { if("1".equals(model.getSex())) { System.out.println("性别是男的,要返回view1"); newView1().view(model.getName()); }else { System.out.println("性别是女的,要返回view2"); newView2().view(model.getName()); } } } packagecom.xing.design.mediator; publicclassModel { privateStringname; privateStringsex; publicStringgetName() { returnname; } publicvoidsetName(Stringname) { this.name=name; } publicStringgetSex() { returnsex; } publicvoidsetSex(Stringsex) { this.sex=sex; } } packagecom.xing.design.mediator; publicclassView1 { publicvoidview(Stringname) { System.out.println("返回view1,名字是【"+name+"】"); } } packagecom.xing.design.mediator; publicclassView2 { publicvoidview(Stringname) { System.out.println("返回view2,名字是【"+name+"】"); } }
二、编写main方法测试
packagecom.xing.design.mediator; /*** * @author xing*/publicclassMediatorDemo { publicstaticvoidmain(String[] args) { Modelmodel=newModel(); model.setName("加藤鹰"); model.setSex("1"); Controller.go(model); Modelmodel2=newModel(); model2.setName("苍井空"); model2.setSex("0"); Controller.go(model2); } }
总结:
中介者模式就是将多个对象及类之间的交互通信封装到一个中介类中,使各个对象不需要显式的相互引用,以降低代码的耦合性。
END