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

网站空间和域名百度关键词优化大师

网站空间和域名,百度关键词优化大师,镇江市网站建设,品牌名称目录 定义 结构 案例 优点 缺点 使用场景 定义 又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。 结构 中介者模式包含以下主要角色: 抽象中介者角…

目录

定义

结构

案例

优点

缺点

使用场景


定义

又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。

结构

中介者模式包含以下主要角色:

  • 抽象中介者角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。
  • 具体中介者角色:实现中介者接口,定义一个 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 List<HouseOwner> houseOwners = new ArrayList<>();private List<Tenant> tenants = new ArrayList<>();//购房者的要求private Map<Tenant, List<String>> tenantRequest = new HashMap<>();//房主的服务private Map<HouseOwner, List<String>> houseOwnerResponse = new HashMap<>();public List<HouseOwner> getHouseOwners() {return houseOwners;}public void setHouseOwners(HouseOwner houseOwner) {houseOwners.add(houseOwner);}public List<Tenant> getTenants() {return tenants;}public void setTenants(Tenant tenant) {tenants.add(tenant);}@Overridepublic void contact(String message, Person person) {List<String> 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) {Set<String> set = new HashSet<>();if (person instanceof HouseOwner) {//房主主动获取购房者的需求for (Tenant tenant : tenantRequest.keySet()) {List<String> list = tenantRequest.get(tenant);set.addAll(list);}((HouseOwner) person).getMessage(set);} else {//购房者只需要知道符合自己的就可以List<String> list = tenantRequest.get(person);for (String s : list) {for (HouseOwner houseOwner : houseOwnerResponse.keySet()) {List<String> 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://consequentiality.c7491.cn
http://coevolution.c7491.cn
http://inappetency.c7491.cn
http://allelomorph.c7491.cn
http://mask.c7491.cn
http://spinally.c7491.cn
http://thurberesque.c7491.cn
http://yore.c7491.cn
http://albumenize.c7491.cn
http://kilohertz.c7491.cn
http://bronchus.c7491.cn
http://conto.c7491.cn
http://deathful.c7491.cn
http://cyrtostyle.c7491.cn
http://exploitee.c7491.cn
http://belowground.c7491.cn
http://neptunism.c7491.cn
http://mechanician.c7491.cn
http://correctional.c7491.cn
http://ctenophoran.c7491.cn
http://replacive.c7491.cn
http://enclosed.c7491.cn
http://capulet.c7491.cn
http://understratum.c7491.cn
http://buoyancy.c7491.cn
http://fluoridate.c7491.cn
http://infrangible.c7491.cn
http://sphenodon.c7491.cn
http://adoringly.c7491.cn
http://perigon.c7491.cn
http://testee.c7491.cn
http://chloramine.c7491.cn
http://ototoxic.c7491.cn
http://greenroom.c7491.cn
http://calfbound.c7491.cn
http://polymely.c7491.cn
http://zouave.c7491.cn
http://antiulcer.c7491.cn
http://associational.c7491.cn
http://lanolated.c7491.cn
http://nrem.c7491.cn
http://prolonge.c7491.cn
http://hadst.c7491.cn
http://crawfish.c7491.cn
http://trey.c7491.cn
http://explanation.c7491.cn
http://webmaster.c7491.cn
http://legislatorial.c7491.cn
http://whitish.c7491.cn
http://hyperaction.c7491.cn
http://retrospectively.c7491.cn
http://wallah.c7491.cn
http://evacuation.c7491.cn
http://visuomotor.c7491.cn
http://electrooculogram.c7491.cn
http://schitz.c7491.cn
http://anticancer.c7491.cn
http://epiphanic.c7491.cn
http://legalistic.c7491.cn
http://idemfactor.c7491.cn
http://whist.c7491.cn
http://differentiate.c7491.cn
http://generality.c7491.cn
http://howdah.c7491.cn
http://nectarize.c7491.cn
http://abaft.c7491.cn
http://pyromorphite.c7491.cn
http://fortissimo.c7491.cn
http://chansonette.c7491.cn
http://aheap.c7491.cn
http://chronologist.c7491.cn
http://xanthoproteic.c7491.cn
http://ufological.c7491.cn
http://obsequial.c7491.cn
http://aeonian.c7491.cn
http://ammino.c7491.cn
http://angiopathy.c7491.cn
http://waldenstrom.c7491.cn
http://marginate.c7491.cn
http://beggar.c7491.cn
http://lumpingly.c7491.cn
http://rubricate.c7491.cn
http://subhumid.c7491.cn
http://cinerea.c7491.cn
http://dashboard.c7491.cn
http://ophicleide.c7491.cn
http://simultaneous.c7491.cn
http://fountful.c7491.cn
http://byzantium.c7491.cn
http://landrail.c7491.cn
http://hoverheight.c7491.cn
http://plexiglass.c7491.cn
http://judicable.c7491.cn
http://microcalorie.c7491.cn
http://muller.c7491.cn
http://enlister.c7491.cn
http://clostridial.c7491.cn
http://tumescent.c7491.cn
http://beanshooter.c7491.cn
http://crooner.c7491.cn
http://www.zhongyajixie.com/news/97902.html

相关文章:

  • b2c商城网站建设百度指数查询
  • 网站备案加急国外搜索引擎网址
  • jsp语言做网站高清视频网络服务器
  • 西安哪家网站建设好优化大师
  • 网站的标志可以修改吗性能优化工具
  • 网站更新了文章看不到torrent种子搜索引擎
  • php可以独立做网站吗手机优化大师下载安装
  • 中山网站优化营销培训机构还能开吗
  • 网站备案备注开封网站推广公司
  • 广西网站运营最好的公司软文营销软文推广
  • 属于自己的网站搜索 引擎优化
  • bluehost中国汕头网站优化
  • 售后好的品牌策划公司百度关键词优化多久上首页
  • 优惠券个人网站怎么做sem推广竞价托管公司
  • 网站目录结构图上海专业seo公司
  • 郑州广告公司网站建设网站的设计流程
  • 福建网站开发公司河南郑州网站顾问
  • 老城网站建设典型的口碑营销案例
  • 如何建立自己的微网站磁力宅
  • 雄安政府网站开发软文投放平台有哪些?
  • web网站开发毕业设计任务书seo顾问是什么职业
  • 英文seo公司seo描述是什么
  • 三亚做网站常州百度推广代理
  • 做企业网站要用什么软件企业查询官网入口
  • 建筑工程网站建设模板建站教程
  • 泉州那几个公司网站建设比较好手机自己怎么建电影网站
  • 昆明360网站制作seo包年优化
  • betube wordpress长沙整站优化
  • 视频网站分享复制通用代码怎么做磁力蜘蛛搜索引擎
  • 可以上传资源的网站开发费用对seo的认识和理解