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

杭州市江干区建设局网站南阳做网站aokuo

杭州市江干区建设局网站,南阳做网站aokuo,外贸品牌推广公司,现在有没有免费的网站空间文章目录 概念结构实例总结 概念 中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 就好比世界各个国家之间可能会产生冲突,但是当产…

文章目录

    • 概念
    • 结构
    • 实例
    • 总结

概念

中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
就好比世界各个国家之间可能会产生冲突,但是当产生冲突的时候需要联合国来解决冲突。每个国家之间的关系,就好比对象和对象之间的关系,这就需要每个对象知道其他的所有对象,具有很强的耦合性。但是每个国家只需要关联联合国这个对象的话,耦合性就会降低很多。

结构

在这里插入图片描述
Mediator(抽象中介者):它定义一个接口,该接口用于与各同事对象之间进行通信。
ConcreteMediator(具体中介者):抽象中介者的子类,协调各个同事对象来实现写作关系,它维持了对各个不同同事对象的引用。
Colleague(抽象同事类):它定义公有的方法,它维持了一个对抽象中介者类的引用。
ConcreteColleague(具体同事类):它是抽象同事类的子类,每一个同事之间需要通信时需要先与中介者通信,通过中介者再实现其他同事之间的通信。

实例

现在以美国和伊拉克之间的战争为例,联合国作为中介者,用中介者模式来实现这个demo。
在这里插入图片描述
联合国机构类

public abstract class UnitedNations {public abstract void declare(String message, Country colleague);
}

联合国安全理事会

@Data
public class UnitedNationsSecurityCouncil extends UnitedNations {private USA usa;private Iraq iraq;@Overridepublic void declare(String message, Country colleague) {if (colleague == usa) {iraq.getMessage(message);} else {usa.getMessage(message);}}
}

国家类

public abstract class Country {protected UnitedNations mediator;protected Country(UnitedNations mediator) {this.mediator = mediator;}public abstract void declare(String message);public abstract void getMessage(String message);}

美国类

public class USA extends Country {public USA(UnitedNations mediator) {super(mediator);}@Overridepublic void declare(String message) {super.mediator.declare(message, this);}@Overridepublic void getMessage(String message) {System.out.println("美国获得对方信息:" + message);}
}

伊拉克类

public class Iraq extends Country {public Iraq(UnitedNations mediator) {super(mediator);}@Overridepublic void declare(String message) {super.mediator.declare(message, this);}@Overridepublic void getMessage(String message) {System.out.println("伊拉克获得对方信息:" + message);}
}

客户端

public class Client {public static void main(String[] args) {UnitedNationsSecurityCouncil unsc = new UnitedNationsSecurityCouncil();USA c1 = new USA(unsc);Iraq c2 = new Iraq(unsc);unsc.setUsa(c1);unsc.setIraq(c2);c1.declare("不准研制核武器,否则要发动战争!");c2.declare("我们没有核武器,也不怕侵略。");}
}

打印结果:
在这里插入图片描述

总结

中介者模式将一个网状的系统结构变成了一个以中介者对象为中心的星型结构,也是一个“迪米特法则”应用的标准模式,各个对象之间不需要耦合,它们之间的沟通仅需要中介者即可。但因为中介者本身需要关联大量的对象,导致后续的维护比较困难。因此也可以做一个小个改善,将变的地方放到配置中进行维护。

public class UnitedNationsSecurityCouncil extends UnitedNations {//放到配置中心private List<Country> countryList = new ArrayList<>();@PostConstructpublic void init() {countryList=Congfiguration.getCountryList();}@Overridepublic void declare(String message, Country colleague) {countryList.forEach(country -> {if (country.getClass() == colleague.getClass()) {country.getMessage(message);}});}
}
http://www.yayakq.cn/news/390613/

相关文章:

  • 湖南响应式网站哪家好做网站设计最好的公司
  • 模版网站做支付功能建筑公司查询
  • 建设网站中心网站联动是什么意思
  • dedeai网站最新国内最新新闻资讯
  • 网站设计优缺点做网站卖得出去吗
  • 推荐个做兼职的网站上海企业网站
  • 合肥做网站yuanmus网站代码在哪里修改
  • 可视化网站后台什么是域名
  • 赣州市南康建设局网站seo具体怎么优化
  • wordpress 设置多域名 一个站点站群建站
  • 好的公司网站app营销策略模板
  • 网站建设策划书(建设前的市场分析)如何制作一个公司网页
  • 察隅网站建设做网站的公司都是小公司
  • 甘肃省建设工程网站seo搜索引擎优化业务
  • 想自己做个公司网站不知道怎么做网站做优化的好处
  • 制作一个网站多少钱啊wordpress模板缩略图代码
  • 沈阳企业建站沭阳网站设计
  • 建设工程检测报告查询网站横山桥网站
  • 大学生网站作品frontpage网页制作视频教程
  • 如何在门户网站发表文章镇江网站建设dmooo
  • 织梦网站栏目建设班级网站设计
  • 哪个网站有ae免费模板.net网站吃内存
  • 企业网站建设公司宣武企业开发网站用什么技术
  • 电商网站功能模块图上海 科技网站建设
  • 济南网站建设方案案例展示百一度一下你就知道
  • 网站使用帮助洞口网站建设
  • 如何编写网站南昌哪里学做网站
  • 东莞专业网站制作设计美食电子商务网站建设策划书
  • 淘宝网站建设百度百科软件项目开发流程和步骤
  • 哪个网站的织梦源码好2023年企业年报入口