中介者模式概括的说就是通过一个中介将很多对象之间的交互关系由直接变为间接,将“网状结构”的交互关系变为“星形结构”的交互关系。比如生活中为了方便交流往往我们都会使用各种群,一个群成员发送了消息所有属于这个群的成员都会收到通知,这样的一个“群”就属于中介者。如果不通过这样的一个群,那么所有需要交流的对象之间都要建立联系,关系变得错综复杂,并且当添加一个新的交流对象时还需要在其它已有对象里添加新对象的引用,违背了开闭原则(对扩展开放,对修改关闭)。 而通过“群”这样一个中介者进行交流的好处是:成员在发送消息时不用直接发送给每个具体的接收者,不必知道接收人的具体信息,只要将消息发送到“群”,那么所有群成员都可以通过这个群获得该消息,降低了交流对象之间的耦合性,体现了迪米特法则(只与直接朋友交谈,不跟“陌生人”说话)。 中介者模式包含以下主要角色: 模拟群成员交流 抽象中介者的接口: 具体中介者,某个特定的群: 抽象同事类,也就是成员类: 三个具体的成员: 测试类:
什么是中介者模式
模式的结构
模式的结构图
模式的java实现
public abstract class Mediator { public abstract void register(Member member); public abstract void relay(Member member, String message); }
import java.util.ArrayList; import java.util.List; public class Group extends Mediator { // 保存所有群成员的集合 private List<Member> members = new ArrayList<Member>(); @Override public void register(Member member) { if (!members.contains(member)) { members.add(member); member.setMediator(this); } } @Override public void relay(Member member, String message) { System.out.println("群服务器收到信息:" + message); for (Member obj : members) { if (!obj.equals(member)) { obj.receive(message); } } } }
public abstract class Member { protected Mediator mediator; public void setMediator(Mediator mediator) { this.mediator = mediator; } public abstract void send(String message); public abstract void receive(String message); }
public class Member1 extends Member { @Override public void send(String message) { System.out.println("成员1发出信息:" + message); mediator.relay(this, message); } @Override public void receive(String message) { System.out.println("成员1收到信息:" + message); } }
public class Member2 extends Member { @Override public void send(String message) { System.out.println("成员2发出信息:" + message); mediator.relay(this, message); } @Override public void receive(String message) { System.out.println("成员2收到信息:" + message); } }
public class Member3 extends Member { @Override public void send(String message) { System.out.println("成员3发出信息:" + message); mediator.relay(this, message); } @Override public void receive(String message) { System.out.println("成员3收到信息:" + message); } }
public class MediatorPattern { public static void main(String[] args) { Mediator mediator = new Group(); Member member1 = new Member1(); Member member2 = new Member2(); Member member3 = new Member3(); mediator.register(member1); mediator.register(member2); mediator.register(member3); member2.send("Hello World"); } }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算