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

重庆推广网站排名宁波seo搜索优化费用

重庆推广网站排名,宁波seo搜索优化费用,最近几年做电影网站怎么样,红色大气宽屏企业网站源码 带后台中英文双语外贸企业网站源码20.中介者模式 中介者模式是设计模式中的对象行为型模式,主要是通过一个中介对象来封装一系列对象的交互,这样使得各需要交互的对象不需要显示的互相引用,从而使得各对象的耦合松散,并且可以独立的改变他们的交互。 在面向对象的…

20.中介者模式

中介者模式是设计模式中的对象行为型模式,主要是通过一个中介对象来封装一系列对象的交互,这样使得各需要交互的对象不需要显示的互相引用,从而使得各对象的耦合松散,并且可以独立的改变他们的交互。
在面向对象的设计中,通常会把不同的行为分布到不同的对象中去,这样的设计就可以会导致每个对应都有其他对象的引用,也可以显式的调用其他各对象,那么如果我修改一个对象的行为,可能就会涉及到其他所有对象的修改,这样大大增加了工作量,不利于系统的维护。

适用

  • 系统中各对象存在复杂的引用关系,且整体结构混乱难以维护的情况下。
  • 一个对象同时会引用其他很多个对象,导致该对象难以复用的情况下。
  • 想通过一个中间类来封装其他多个类的行为,同时又不想生成很多个子类的情况下。

UML类图:
在这里插入图片描述

中介者模式一共包含4类角色:
1、抽象中介者角色(Mediator):抽象中介者定义一个接口,该接口用于提供个对象之间的通信。

public interface Mediator {void send(String message, Colleague colleague, String receiver);
}

2、具体中介者角色(ConcreteMediator):具体中介者实现抽象中介者定义的接口,并且保存需要该对象进行中介通信的各对象实例。

/**
* @ClassName ConcreteMediator
* @Author ykx
* @Date 2022/9/5 20:28
* @Version 1.0
*/
public class ConcreteMediator implements Mediator {private ConcreteColleague1 concreteColleague1;private ConcreteColleague2 concreteColleague2;public void setConcreteColleague1(ConcreteColleague1 concreteColleague1) {this.concreteColleague1 = concreteColleague1;}public void setConcreteColleague2(ConcreteColleague2 concreteColleague2) {this.concreteColleague2 = concreteColleague2;}@Overridepublic void send(String message, Colleague colleague, String receiver) {if (colleague == concreteColleague1) {if (receiver.equals("ConcreteColleague2")) {System.out.println("ConcreteColleague1给" + receiver + "发送消息" + message);}} else if (colleague == concreteColleague2) {if (receiver.equals("ConcreteColleague1")) {System.out.println("ConcreteColleague2给" + receiver + "发送消息" + message);}}}
}

3、抽象同事角色(Colleague):保存对中介者对象的引用。

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

4、具体同事角色(ConcreteColleague):保存对中介者对象的引用,同时在需要与其他对象通信的时候,通过与中介者对象通信来完成。
具体同事1

/**
* @ClassName ConcreteColleague1
* @Author ykx
* @Date 2022/9/5 20:30
* @Version 1.0
*/
public class ConcreteColleague1 extends Colleague {public ConcreteColleague1(Mediator mediator) {super(mediator);}public void sendtoColleague2(){String message="同事类1发送消息";mediator.send(message,this,"ConcreteColleague2");}
}

具体同事2

/**
* @ClassName ConcreteColleague2
* @Author ykx
* @Date 2022/9/5 20:30
* @Version 1.0
*/
public class ConcreteColleague2 extends Colleague {public ConcreteColleague2(Mediator mediator) {super(mediator);}public void sendtoColleague1(){String message="同事类2发送消息";mediator.send(message,this,"ConcreteColleague1");}
}

测试

public class MediatorTest {public static void main(String[] args) {ConcreteMediator concreteMediator = new ConcreteMediator();ConcreteColleague1 concreteColleague1 = new ConcreteColleague1(concreteMediator);ConcreteColleague2 concreteColleague2 = new ConcreteColleague2(concreteMediator);concreteMediator.setConcreteColleague1(concreteColleague1);concreteMediator.setConcreteColleague2(concreteColleague2);concreteColleague1.sendtoColleague2();concreteColleague2.sendtoColleague1();}
}
http://www.dtcms.com/wzjs/391824.html

相关文章:

  • 人大家网站建设seo优化运营
  • 大连在哪儿杭州seo公司服务
  • 有哪些网站是cms专业培训心得体会
  • 深圳做网站排名价格建筑设计网站
  • 园洲做网站公司网络推广合同
  • 2003 防火墙 限制网站长沙优化网站推广
  • php会了 怎么做网站苏州seo网站管理
  • 做yahoo代拍网站公司网络营销试卷及答案
  • 遂宁市网站建设2345网址导航用户中心
  • win10做的网站其他电脑访问排名优化seo公司
  • 企业网站建设可行性分析百度热线
  • 淘宝做任务网站手机网页制作app
  • 眼科医院网站建设方案成都网站维护
  • 部门网站建设总结网络营销与管理专业是干什么的
  • 让你做一个旅游网站你会怎么做天津企业seo
  • wordpress建手机版好搜自然seo
  • 网站倒计时怎么做搜狗站长工具综合查询
  • 京东网站建设的策划书青岛seo搜索优化
  • 山西网站建设报价单首页优化排名
  • 企业网站搜索引擎优化方案厦门seo网站优化
  • 网站建设 sheji021网络广告投放
  • 下载的asp网站怎么打开搜狗seo排名软件
  • 云南网站建设公司排行无限制访问国外的浏览器
  • 腾讯微信山东区建站推广中心2024年新冠疫情最新消息今天
  • 上海做电子商务网站的公司小程序制作一个需要多少钱
  • 做计算机题的网站长尾关键词爱站
  • 单纯做seo能否提升网站流量南京网络优化培训
  • 广州网站推广怎么做公司网站推广
  • 电子商务网站建设 市场分析软文广告经典案例300大全
  • 真人做的免费视频网站想学销售去哪培训