当前位置: 首页 > news >正文

写作网站投稿平台163企业邮箱登录入口官网

写作网站投稿平台,163企业邮箱登录入口官网,广州网站备案要审核多久,上海设计公司官网目录 定义 结构 案例 优点 缺点 使用场景 定义 又叫调停模式#xff0c;定义一个中介角色来封装一系列对象之间的交互#xff0c;使原有对象之间的耦合松散#xff0c;且可以独立地改变它们之间的交互。 结构 中介者模式包含以下主要角色#xff1a; 抽象中介者角…目录 定义 结构 案例 优点 缺点 使用场景 定义 又叫调停模式定义一个中介角色来封装一系列对象之间的交互使原有对象之间的耦合松散且可以独立地改变它们之间的交互。 结构 中介者模式包含以下主要角色 抽象中介者角色它是中介者的接口提供了同事对象注册与转发同事对象信息的抽象方法。具体中介者角色实现中介者接口定义一个 List 来管理同事对象协调各个同事角色之间的交互关系因此它依赖于同事角色。抽象同事类角色定义同事类的接口保存中介者对象提供同事对象交互的抽象方法实现所有相互影响的同事类的公共功能。具体同事类角色是抽象同事类的实现者当需要与其他同事对象交互时由中介者对象负责后续的交互。 案例 //抽象中介类 public abstract class Mediator {public abstract void contact(String message,Person person);public abstract void getMessage(Person person); } 具体中介类  public class MediatorStructure extends Mediator {private ListHouseOwner houseOwners new ArrayList();private ListTenant tenants new ArrayList();//购房者的要求private MapTenant, ListString tenantRequest new HashMap();//房主的服务private MapHouseOwner, ListString houseOwnerResponse new HashMap();public ListHouseOwner getHouseOwners() {return houseOwners;}public void setHouseOwners(HouseOwner houseOwner) {houseOwners.add(houseOwner);}public ListTenant getTenants() {return tenants;}public void setTenants(Tenant tenant) {tenants.add(tenant);}Overridepublic void contact(String message, Person person) {ListString list null;if (person instanceof HouseOwner) {//说明是房主联系中介中介需要把消息给对应的购房者//首先判断信息map中有没有这个房主信息HouseOwner houseOwner (HouseOwner) person;list houseOwnerResponse.get(person);if (list null || list.size() 0) {//说明没有这个房主的信息list new ArrayList();list.add(message);houseOwnerResponse.put(houseOwner, list);} else {if (list.contains(message)) {//说明已经存在这个消息了return;}list.add(message);houseOwnerResponse.put(houseOwner, list);}} else {//说明购房者发起了消息Tenant tenant (Tenant) person;list tenantRequest.get(tenant);if (list null || list.size() 0) {list new ArrayList();//说明没有这个购房者的信息list.add(message);tenantRequest.put(tenant, list);} else {if (list.contains(message)) {//说明已经存在这个消息了return;}list.add(message);tenantRequest.put(tenant, list);}}}public void getMessage(Person person) {SetString set new HashSet();if (person instanceof HouseOwner) {//房主主动获取购房者的需求for (Tenant tenant : tenantRequest.keySet()) {ListString list tenantRequest.get(tenant);set.addAll(list);}((HouseOwner) person).getMessage(set);} else {//购房者只需要知道符合自己的就可以ListString list tenantRequest.get(person);for (String s : list) {for (HouseOwner houseOwner : houseOwnerResponse.keySet()) {ListString response houseOwnerResponse.get(houseOwner);if (response.contains(s)) {set.add(houseOwner.name);}}}((Tenant) person).getMessage(set);}} } 抽象同事类 public abstract class Person {protected String name;protected Mediator mediator;public String getName() {return name;}public void setName(String name) {this.name name;}public Mediator getMediator() {return mediator;}public void setMediator(Mediator mediator) {this.mediator mediator;}public Person(String name, Mediator mediator) {this.name name;this.mediator mediator;}abstract void contact(String message); } 房主 public class HouseOwner extends Person {public HouseOwner(String name, Mediator mediator) {super(name, mediator);}Overridevoid contact(String message) {System.out.println(name房主发布了一条消息message);mediator.contact(message,this);}public void getMessage(Set message){System.out.println(name房主获得了消息message);} }public class Tenant extends Person{public Tenant(String name, Mediator mediator) {super(name, mediator);}Overridevoid contact(String message) {System.out.println(name购房者发布了一条消息:message);mediator.contact(message,this);}void getMessage(Set message){System.out.println(name购房者获得了消息message);} } 测试  public class Client {public static void main(String[] args) {MediatorStructure mediatorStructure new MediatorStructure();HouseOwner houseOwnerOne new HouseOwner(房主一号, mediatorStructure);HouseOwner houseOwnerTwo new HouseOwner(房主二号, mediatorStructure);Tenant tenantOne new Tenant(买房一号,mediatorStructure);Tenant tenantTwo new Tenant(买房一号,mediatorStructure);mediatorStructure.setHouseOwners(houseOwnerOne);mediatorStructure.setHouseOwners(houseOwnerTwo);mediatorStructure.setTenants(tenantOne);mediatorStructure.setTenants(tenantTwo);tenantOne.contact(汤臣一品);tenantOne.contact(汤臣二品);tenantTwo.contact(汤臣三品);tenantTwo.contact(汤臣四品);houseOwnerOne.contact(汤臣一品);houseOwnerTwo.contact(汤臣六品);mediatorStructure.getMessage(houseOwnerOne);mediatorStructure.getMessage(tenantOne);} } 买房一号购房者发布了一条消息:汤臣一品 买房一号购房者发布了一条消息:汤臣二品 买房一号购房者发布了一条消息:汤臣三品 买房一号购房者发布了一条消息:汤臣四品 房主一号房主发布了一条消息汤臣一品 房主二号房主发布了一条消息汤臣六品 房主一号房主获得了消息[汤臣三品, 汤臣四品, 汤臣二品, 汤臣一品] 买房一号购房者获得了消息[房主一号] 案例中存在两种同事角色购房者以及房主中介类保存不同同事类对象然后根据不同同事类给出不同返回结果。 优点 松散耦合中介者模式通过把多个同事对象之间的交互封装到中介者对象里面从而使得同事对象之间松散耦合基本上可以做到互补依赖。这样一来同事对象就可以独立地变化和复用而不再像以前那样“牵一处而动全身”了。集中控制交互多个同事对象的交互被封装在中介者对象里面集中管理使得这些交互行为发生变化的时候只需要修改中介者对象就可以了当然如果是已经做好的系统那么就扩展中介者对象而各个同事类不需要做修改。一对多关联转变为一对一的关联没有使用中介者模式的时候同事对象之间的关系通常是一对多的引入中介者对象以后中介者对象和同事对象的关系通常变成双向的一对一这会让对象的关系更容易理解和实现。 缺点 当同事类太多时中介者的职责将很大它会变得复杂而庞大以至于系统难以维护。 使用场景 系统中对象之间存在复杂的引用关系系统结构混乱且难以理解。当想创建一个运行于多个类之间的对象又不想生成新的子类时。
http://www.huolong8.cn/news/183618/

相关文章:

  • 带地板翻转的网站怎么做asp资源下载网站
  • 网站怎么做百度推广做网站产品图片素材
  • 系部网站建设需求分析百度免费广告发布平台
  • 网站制造wordpress播放纯音乐
  • 太原网站建设随州网站建设平台用乐云践新
  • 做百度推广网站咱们做wordpress 子站点函数
  • 做网站如何放入图像龙岩网站设计 都找推商吧系统
  • 网站域名 过期宁波网站建
  • 网站备案 信息查询天津网站制作报价
  • 怎样查看网站开发语言衡阳关键词优化首选
  • 最新远程网站建设服务器电子商务网站建设调查分析
  • 网站策划与运营课程认知二维码制作生成器
  • 绍兴网站建设seo网络销售是做什么
  • 17做网站广州新塘江苏 网站 备案
  • 公司网站开发的流程wordpress配置ftp服务器配置
  • 如何注册个做电影的网站简单的网页开发
  • 特色专业建设验收网站wordpress图片延迟加载插件
  • 网站建设需要学习课程是网站推广的案例
  • 桂林网站制作培训学校免费刷推广链接的软件
  • 做纺织机械的网站域名新闻资讯网站怎么做
  • 宁波建设工程检测行业协会网站余姚网站建设开发
  • 网站建设优酷网站建设经费
  • 保定市城乡建设局官方网站外贸网站建设 泰州
  • 做年会的网站企业运营管理系统
  • 吴忠市建设局网站WordPress 站点图标链接
  • 返回json数据的网站豌豆荚app下载 官网
  • 中企动力和东莞朝阳做的网站对比wordpress封装易语言
  • 洛阳网站优化云闪付小程序开发平台
  • 修改网站域名网站主机空间
  • 深圳网站设计建设公司互联网建筑公司