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

日用品网站模板体验式营销经典案例

日用品网站模板,体验式营销经典案例,企业解决方案业务,做网站用asp div代码7.中介者模式 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 7.1 组成结构 抽象中介者(Mediator):定义统一的接口&…

7.中介者模式

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

7.1 组成结构

抽象中介者(Mediator):定义统一的接口,用于各同事角色之间的通信;

具体中介者(ConcreteMediator):从具体的同事对象接收消息,向具体同事对象发出命令,协调各同事间的协作;

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

具体同事类(ConcreteColleague):负责实现自发行为(Self-Method),转发依赖方法(Dep-Method)交由中介者进行协调;

7.2 场景设计

模拟同事A和同事B之间的相互通信,uml类图如下

7.3 实现

抽象中介者

public abstract class Mediator {//放入需要联系的成员类protected ColleagueA colleagueA;protected ColleagueB colleagueB;//成员类的get setpublic ColleagueA getColleagueA() {return colleagueA;}public void setColleagueA(ColleagueA colleagueA) {this.colleagueA = colleagueA;}public ColleagueB getColleagueB() {return colleagueB;}public void setColleagueB(ColleagueB colleagueB) {this.colleagueB = colleagueB;}//与同事A通信public abstract void sendMessageToColleagueA(String message);//与同事B通信public abstract void sendMessageToColleagueB(String message);}

具体中介者

public class ConcreteMediator extends  Mediator{//与A成员建立连接@Overridepublic void sendMessageToColleagueA(String message) {//调用同事A的接收消息方法super.colleagueA.receiveMessage(message);}//与B成员建立连接@Overridepublic void sendMessageToColleagueB(String message) {//调用同事B的接收消息方法super.colleagueB.receiveMessage(message);}
}

抽象同事类

public abstract class Colleague {//聚合中介者,用于同事间的通信protected Mediator mediator;public Colleague(Mediator mediator) {this.mediator = mediator;}
}

具体同事类

//同事A
public class ColleagueA extends Colleague{public ColleagueA(Mediator mediator) {super(mediator);}public void selfMethod(){System.out.println("成员A:我是成员A");}public void receiveMessage(String message){System.out.println("成员A收到了 "+message);}//成员A和成员A进行沟通,但是都调用中介者类public void sendMessageToColleagueB(String message){super.mediator.sendMessageToColleagueB(message);}
}//同事B
public class ColleagueB extends Colleague{public ColleagueB(Mediator mediator) {super(mediator);}public void selfMethod(){System.out.println("成员B:我是成员B");}public void receiveMessage(String message){System.out.println("成员B收到了 "+message);}//成员A和成员B进行沟通A,但是都调用中介者类public void sendMessageToColleagueA(String message){super.mediator.sendMessageToColleagueA(message);}
}

//测试类

public class Client {public static void main(String[] args) {//创建中介者Mediator mediator=new ConcreteMediator();//创建同事A和BColleagueA colleagueA = new ColleagueA(mediator);ColleagueB colleagueB = new ColleagueB(mediator);//中介者设置A和B对象mediator.setColleagueA(colleagueA);mediator.setColleagueB(colleagueB);colleagueA.selfMethod();colleagueA.sendMessageToColleagueB("来自成员A");colleagueB.selfMethod();colleagueB.sendMessageToColleagueA("来自成员B");}
}
7.4 优缺点分析

优点:

  • 松散耦合

    中介者模式通过把多个同事对象之间的交互封装到中介者对象里面,从而使得同事对象之间松散耦合,基本上可以做到互补依赖。这样一来,同事对象就可以独立地变化和复用,而不再像以前那样“牵一处而动全身”了。

  • 集中控制交互

    多个同事对象的交互,被封装在中介者对象里面集中管理,使得这些交互行为发生变化的时候,只需要修改中介者对象就可以了,当然如果是已经做好的系统,那么就扩展中介者对象,而各个同事类不需要做修改。

  • 一对多关联转变为一对一的关联

    没有使用中介者模式的时候,同事对象之间的关系通常是一对多的,引入中介者对象以后,中介者对象和同事对象的关系通常变成双向的一对一,这会让对象的关系更容易理解和实现。

缺点:

当同事类太多时,中介者的职责将很大,它会变得复杂而庞大,以至于系统难以维护。

7.5 使用场景
  • 系统中对象之间存在复杂的引用关系,系统结构混乱且难以理解。
  • 当想创建一个运行于多个类之间的对象,又不想生成新的子类时。
http://www.dinnco.com/news/19236.html

相关文章:

  • 北京营销型网站建设品牌推广活动方案
  • 淘宝客是如何做网站与淘宝对接的百度关键词优化多少钱一年
  • 百度做网站骗人到哪里去投诉最近国际新闻大事20条
  • 百度推广 做网站seo优化关键词排名优化
  • banner免费设计网站搜索量最大的关键词
  • 聊城网站建设包括哪些百度知道小程序
  • 做网站待遇深圳seo优化服务
  • 去年做那些网站能致富郑州seo优化顾问热狗
  • 娱乐网站设计多少行业网站建站推广
  • 一般网站后台都是哪里做济南seo的排名优化
  • wordpress 评论显示头像优化公司结构
  • 想做个电影网站该怎么做十大免费网站推广平台有哪些
  • 做班级网站的素材个人网站首页设计
  • 石家庄网站制作报价阜新网络推广
  • 潢川微信网站建设seo关键词优化报价价格
  • 哪些网站可以做任务赚钱cctv 13新闻频道
  • 销售网站内容设计方案凤山网站seo
  • 免费APP 微信 网站平台为什么不建议去外包公司上班
  • 临沂网站设计百度搜索竞价推广
  • 邢台市建设局安全监督管理网站网站优化要做哪些
  • 用vs2010做网站登入网站seo快速
  • wordpress用户前台删除文章免费百度seo引流
  • 网站图片内容西藏自治区seo 标题 关键词优化
  • 网站建设中怎样设置背景性价比高seo排名
  • 浙江人工智能建站系统软件友情链接交易购买
  • 中华智能自建代理网站网站快速被百度收录
  • flash成品网站怎么做品牌推广和宣传
  • 本机电脑怎么做网站长沙网站设计拓谋网络
  • 保险做的好的网站有哪些内容临沂seo整站优化厂家
  • 建筑材料批发网站下载百度网盘app