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

深圳建设很行住房公积金网站活动网站推广

深圳建设很行住房公积金网站,活动网站推广,网络规划设计师对应中级,单页网站的优点中介者模式 中介者模式又称为调解者模式或调停者模式,属于行为型模式。它用一个中介对象封装系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式包装了一系列对…

中介者模式

中介者模式又称为调解者模式或调停者模式,属于行为型模式。它用一个中介对象封装系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使它们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。其核心思想是,通过中介者解耦系统各层次对象的直接耦合,层次对象的对外依赖通信统统交由中介者转发。

中介者模式通过提供一个中介类,将系统各层次对象间的多对多关系变成一对多关系,将复杂的网状结构变成以调停者为中心的星形结构,达到降低系统的复杂性,提高可扩展性的作用。

 

应用场景

当多个类相互耦合,形成了网状结构,则可以考虑使用中介者模式进行优化。

1、系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。2、想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。

飞行器驾驶员之间不会通过相互沟通来决定下一架降落的飞机。 所有沟通都通过控制塔台进行。

主要角色

1.抽象中介者(Mediator)

定义统一的接口,用于各同事角色之间的通信

2.具体中介者(ConcreteMediator)

从具体的同事对象接收消息,向具体同事对象发出命令,协调各同事间的协作

3.抽象同事类(Colleague)

每一个同事对象均需要依赖中介者角色,与其他同事间通信时,交由中介者进行转发协作

4.具体同事类(ConcreteColleague)

负责实现自发行为(Self-Method),转发依赖方法

 

优缺点

优点:

1.减少类间依赖,将多对多依赖转化成了一对多,降低了类间耦合;2.类间各司其职,符合迪米特法则。

缺点:

1.中介者模式中将原本多个对象直接的相互依赖变成了中介者和多个同事类的依赖关系。当同事类越多时,中介者就会越臃肿,变得复杂且难以维护。

基本使用

创建抽象中介者

public abstract class Mediator {protected ConcreteColleagueA colleagueA;protected ConcreteColleagueB colleagueB;public void setColleageA(ConcreteColleagueA colleague) {this.colleagueA = colleague;}public void setColleageB(ConcreteColleagueB colleague) {this.colleagueB = colleague;}// 中介者业务逻辑public abstract void transferA();public abstract void transferB();
}

创建具体中介者

public class ConcreteMediator extends Mediator {/*** 由具体同事类A,向具体同事对象B发出指令*/@Overridepublic void transferA() {this.colleagueB.selfMethodB();}/*** 由具体同事类B,向具体同事对象A发出指令*/@Overridepublic void transferB() {this.colleagueA.selfMethodA();}
}

创建抽象同事类

public abstract class Colleague {protected Mediator mediator;public Colleague(Mediator mediator) {this.mediator = mediator;}
}

创建具体同事类

public class ConcreteColleagueA extends Colleague {public ConcreteColleagueA(Mediator mediator) {super(mediator);this.mediator.setColleageA(this);}/*** 自有方法*/public void selfMethodA() {System.out.println( this.getClass().getSimpleName()+ "收到中介协作通知,selfMethodA自有方法执行");}/*** 依赖方法*/public void depMethodA() {System.out.println( this.getClass().getSimpleName()+ " depMethodA通知中介者进行转发协作");// 中介者进行转发协作this.mediator.transferA();}
}
public class ConcreteColleagueB extends Colleague {public ConcreteColleagueB(Mediator mediator) {super(mediator);this.mediator.setColleageB(this);}/*** 自有方法*/public void selfMethodB() {System.out.println(this.getClass().getSimpleName() + "收到中介协作通知,selfMethodB自有方法执行");}/*** 依赖方法*/public void depMethodB() {System.out.println(this.getClass().getSimpleName() + " depMethodB通知中介者进行转发协作");// 中介者进行转发协作this.mediator.transferB();}
}

客户端执行

    public static void main(String[] args) {// 创建抽象中介者Mediator mediator = new ConcreteMediator();// 具体同事类ConcreteColleagueA colleagueA = new ConcreteColleagueA(mediator);ConcreteColleagueB colleagueB = new ConcreteColleagueB(mediator);// 中介者进行转发协作,A转发给BcolleagueA.depMethodA();System.out.println("-------------------------");// 中介者进行转发协作,B转发给AcolleagueB.depMethodB();}
ConcreteColleagueA depMethodA通知中介者进行转发协作
ConcreteColleagueB收到中介协作通知,selfMethodB自有方法执行
-------------------------
ConcreteColleagueB depMethodB通知中介者进行转发协作
ConcreteColleagueA收到中介协作通知,selfMethodA自有方法执行
http://www.yayakq.cn/news/421100/

相关文章:

  • 天津建设部网站首页从零开始学习网络营销
  • php服装网站模板东莞模板建站哪家好
  • 建立公司网站需要注意什么测速网站开发
  • 网站备案后可以更换域名吗制作网站哪里做
  • 1元做网站方案php网站开发视频教程
  • 怎样做网站结构优化怎样将建设银行网站加入可信站
  • 18款禁用网站app破解版石家庄最新轨迹
  • wordpress 多的模板seo快速提升排名
  • 技术支持 贵阳贵阳网站建设海南中小企业网站建设
  • 网站平台延展性广东网络营销是什么
  • 手机配件网站模板南通优化网站价格
  • 电子商务网站建设课外实训网站ui外包
  • 海南医院网站建设app推广拉新
  • 网站的pdf目录怎么做的wordpress系统在线升级失败
  • 网站建设制作介绍河南陕西省住房城乡建设厅网站管理中心
  • 做珠宝网站价格多少为什么要给大夫做网站
  • 手机网站设计的项目描述哈尔滨市工程建设网
  • 外贸网站建设推广方案网站网站如何做的充值
  • 传奇大气网站模板免费下载找谁做网站
  • 个人网站的建设参考文献网站建设怎么更换图片
  • 服装公司网站网页设计手机网站列表 教程
  • 怎么样用手机做网站关键词安康建设网站
  • 英语培训网站建设需求分析报告如何制作电子印章
  • 内蒙网站建设seo优化金站网.营销型网站
  • 网站建设费算广告费吗长沙有什么好玩的好吃的
  • php大型网站开发视频教程wordpress设置瀑布流
  • 阿里巴巴外贸网站登录商城网站支付端怎么做
  • 电子商务网站建设的核心是教育网站赏析
  • 网站域名分析誉铭摄影网站
  • 长沙做企业网站百度网站建设优化