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

网站开发测量像素工具微网站与app的区别

网站开发测量像素工具,微网站与app的区别,成都创新网站建设,公司介绍网站模板写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 中介者模式(Mediat…

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。

中介者模式(Mediator)

对象行为型模式。

目录

一、概述

1.1、直观的理解:

1.2、主要角色:

1.3、描述对象之间关系的UML图:

1.4、适用场景:

二、代码举例

2.1、对象之间的关系用UML图描述如下:

2.2、Java代码如下:


一、概述

1、用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

1.1、直观的理解

假设现有4个同事类对象,要让他们之间可以两两交互,对比普通方式和中介者模式的区别:

可以看到,在没有使用中介者模式时每个同事类都要产生3个给对方发送消息和3个接收消息的动作,如果是有很多的同事,那么在想要修改时会非常复杂。而使用中介者后,每个同事类只需要1个给中介发消息和1个接收中介者消息的动作,同事类之间的交互都由中介者转发,且都是和中介者进行交互,大大的减少了同事类之间的耦合。

1.2、主要角色:

  • 中介者:中介者的抽象类和接口 + 具体的中介者类,协调同事类们之间的通讯
  • 同事类:同事类的抽象类和接口 + 具体的同事类,需要通讯的对象

1.3、描述对象之间关系的UML图:

(我们会发现,这相当于把同事类之间的交互控制全部放到了中介者类里,此时中介类会变得比任何一个同事类都复杂)

1.4、适用场景:

  • 一组对象以定义良好但复杂的方式进行通讯,产生的相互依赖关系结构混乱且难以理解
  • 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象
  • 想定制一个分布在多个类中的行为,而又不想生成太多的子类

(注:当系统中出现多对多交互复杂的对象时,不要急着使用中介者模式,而要先反思你的系统在设计上是不是合理的)

二、代码举例

假设有两个同事类1和2要进行交互。这个例子比较简单,就不再详细分析了。但你可以把本例当做一个模板,然后灵活使用:

2.1、对象之间的关系用UML图描述如下:

2.2、Java代码如下:

同事类的抽象类:

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

同事类1:

public class ConcreteColleague1 extends Colleague {public ConcreteColleague1(Mediator mediator) {super(mediator);}public void send(String message) {this.mediator.send(message, this);}public void notify(String message) {System.out.println("同事1收到信息:" + message);}
}

同事类2:

public class ConcreteColleague2 extends Colleague {public ConcreteColleague2(Mediator mediator) {super(mediator);}public void send(String message) {this.mediator.send(message, this);}public void notify(String message) {System.out.println("同事2收到信息:" + message);}
}

中介者的抽象类:

abstract class Mediator {public abstract void send(String message, Colleague colleague);
}

具体的中介者的类:

public class ConcreteMediator extends Mediator {private ConcreteColleague1 colleague1;private ConcreteColleague2 colleague2;public void setColleague1(ConcreteColleague1 colleague1) {this.colleague1 = colleague1;}public void setColleague2(ConcreteColleague2 colleague2) {this.colleague2 = colleague2;}@Overridepublic void send(String message, Colleague colleague) {if (colleague == this.colleague1){this.colleague2.notify(message);} else{this.colleague1.notify(message);}}
}

主程序(发起请求的类):

public class Main {public static void main(String[] args) {ConcreteMediator mediator = new ConcreteMediator();ConcreteColleague1 colleague1 = new ConcreteColleague1(mediator);ConcreteColleague2 colleague2 = new ConcreteColleague2(mediator);mediator.setColleague1(colleague1);mediator.setColleague2(colleague2);colleague1.send("你好吗?");colleague2.send("我很好。");}
}

这里就不再举例了,可以把上面的Java例子复制到你本地,运行main函数试一下加深理解。这些代码都是我自己学习的时候根据一些教材手敲的,不存在bug可以直接运行。

如果觉得本文还不错,就请点个赞给作者一点鼓励吧!如果有建议,也请评论指教和讨论!

http://www.dtcms.com/wzjs/809571.html

相关文章:

  • 好看的单页面网站模板做网站要通过网信办备案吗
  • 备案后网站可以改名吗制作app的软件有哪些
  • 免费设计图网站wordpress微名片模板
  • 做网站的意义大不大网站公司建设公司
  • 全国网站建设哪家好用钢铁侠做网站
  • 有经验的番禺网站建设邢台专业做网站的地方
  • 青岛网站建设小公司排名网站首页图片怎么做
  • 建设部网站燃气管理部门产品网页的制作
  • 浅谈博物馆网站的建设意义深圳手机网站模板
  • 自助微信网站设计网站建设办公软件销售技巧
  • 中国空间站简笔画中国建设银行培训网站
  • 射洪做网站公司网站主页排版
  • 温州哪里有做网站的网站升级改版需要几天
  • 上海seo推广整站只有一个域名怎么建设网站
  • 赣榆区住房和城乡建设局网站构建网站需要什么意思
  • 娄底市住房和城乡建设局官方网站移动网站怎么登录
  • 域名不同网站程序相同服务外包的三种形式
  • 小程序开发网站设计制作创新建设资金网站
  • 石家庄公司网站如何制作it行业做网站一个月多少钱
  • 江苏山海连云建设有限公司网站外贸网站多语言
  • 做网站建设的合同小程序开发注意事项
  • 汕头网站推广seodede搭建网站教程
  • 做网站的图片制作网站教程
  • 金溪做网站微信官网网页版
  • 简述网站开发的过程百度html代码
  • 做货代在哪些网站能找到客户企业招聘网
  • 佛山手机建站模板电商网站设计文档
  • 温州电力建设有限公司网站wordpress声明
  • 上海做网站的公司官网广州网捷网站建设技术有限公司
  • 网站开发合理性是什么意思在wordpress中 密码