做投资类网站服务器,佛山网站建设怎么办,搜索引擎收录提交,建设网站比较好公司模式定义
又称为调停者模式
用一个中介对象来封装一系列的对象交互#xff0c;中介者使各对象不需要显式地相互引用#xff0c;从而使其耦合松散#xff0c;而且可以独立地改变它们之间的交互
对象行为型模式
模式结构 Mediator#xff1a;抽象中介者ConcreteMediator中介者使各对象不需要显式地相互引用从而使其耦合松散而且可以独立地改变它们之间的交互
对象行为型模式
模式结构 Mediator抽象中介者ConcreteMediator具体中介者Colleague抽象同事类ConcreteColleague具体同事类
中介者模式可以使对象之间的关系数量急剧减少
将系统的网状结构变成以中介者为中心的星形结构迪米特法则的典型应用
中介者承担两方面的职责
中转作用结构性通过中介者提供的中转作用各个同事对象就不再需要显式引用其他同事 当需要和其他同事进行通信时通过中介者即可 协调作用行为性中介者可以更进一步的对同事之间的关系进行封装 同事可以一致地和中介者进行交互而不需要指明中介者需要具体怎么做中介者根据封装在自身内部的协调逻辑对同事的请求进行进一步处理将同事成员之间的关系行为进行分离和封装
抽象中介者类代码
public abstract class Mediator {protected ArrayList colleagues;public void register(Colleague colleague) {colleagues.add(colleague);}public abstract void operation();}
具体中介者类代码
public class ConcreteMediator extends Mediator {public void operation() {......((Colleague)(colleagues.get(0))).method1();......}}
抽象同事类代码
public abstract class Colleague {protected Mediator mediator;public Colleague(Mediator mediator) {this.mediator mediator;}public abstract void method1();public abstract void method2();}
具体同事类代码
public class ConcreteColleague extends Colleague {public ConcreteColleague(Mediator mediator) {super(mediator);}public void method1() {......}public void method2() {mediator.operation1();}}
实例
实例虚拟聊天室 某论坛系统欲增加一个虚拟聊天室允许论坛会员通过该聊天室进行信息交流普通会员CommonMember可以给其他会员发送文本信息钻石会员DiamondMember既可以给其他会员发送文本信息还可以发送图片信息。该聊天室可以对不雅字符进行过滤如“日”等字符还可以对发送的图片大小进行控制。用中介者模式设计该虚拟聊天室。 模式分析
优点 简化了对象之间的交互将各同事解耦减少子类生成可以简化各同事类的设计和实现 缺点 在具体中介者类中包含了同事之间的交互细节可能会导致具体中介者类非常复杂使得系统难以维护
适用环境
系统中对象之间存在复杂的引用关系产生的相互依赖关系结构混乱且难以理解一个对象由于引用了其他很多对象并且直接和这些对象通信导致难以复用该对象想通过一个中间类来封装多个类中的行为而又不想生成太多的子类