美文网首页
GeekBand-C++设计模式-Week2

GeekBand-C++设计模式-Week2

作者: 雪箫KHY | 来源:发表于2017-03-27 19:58 被阅读0次

代理模式

代理模式的定义

代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
代理模式的英文叫做Proxy或Surrogate,中文都可译成“代理”。所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式和适配器模式的区别:适配器模式的用意是要改变所考虑的对象的接口,而代理模式并不能改变所代理对象的接口。
代理模式和装饰模式的区别:装饰模式应当为所装饰的对象提供增强功能,而代理模式对对象的使用施加控制,并不提供对象本身的增强功能。
代码模式和门面模式:有时候,门面模式兼任代理的职责,这时候,门面模式又叫做代理门面模式,或门面代理模式。

代理模式的结构

类图和时序图
Paste_Image.png Paste_Image.png
所涉及的角色

(1)抽象主题角色:声明了真实主题和代理主题的共同接口,这样一来在任何可以使用真实主题的地方都可以使用代理主题。
(2)代理主题(Proxy)角色:代理主题角色内部含有对真实主题的引用,从而可以在任何时候操作真实主题对象;代理主题角色提供一个与真实主题角色相同的接口,以便可以在任何时候都可以替代真实主题,控制对真实主题的引用,负责在需要的时候创建真实主题对象(和删除真实主题对象);代理角色通常在将客户端调用传递给真实主题之前或者之后,都要执行某个操作,而不是单纯地将调用传递给真实对象。
(3)真实主题角色:定义了代理角色所代表的真实对象。

中介者模式

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

通用类图:

Paste_Image.png

举例:在一个公司里面,有很多部门、员工(统称他们互相为"同事"),为了完成一定的任务,“同事”之间肯定有许多需要互相配合、交流的过程。如果由各个“同事”频繁地到处去与自己有关的“同事”沟通,这样肯定会形成一个多对多的杂乱的联系网络而造成工作效率低下。

此时就需要一位**专门的“中介者”
**给各个“同事”分配任务,以及统一跟进大家的进度并在“同事”之间实时地进行交互,保证“同事”之间必须的沟通交流。很明显我们知道此时的“中介者”担任了沟通“同事”彼此之间的重要角色了,“中介者”使得每个“同事”都变成一对一的联系方式,减轻了每个“同事”的负担,增强工作效率。

大概理清上面简单例子中的意图之后,给出中介者模式适用场景:
1、一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。
2、一个对象引用其他很多对象并且直接与这些对象通信,
导致难以复用该对象。

3、想定制一个分布在多个类中的行为,而又不想生成太多的子类。

其实,中介者模式又被称为“调停者”模式,我们可以理解为一群小孩子(同事)吵架了,这时就很需要一位大人(调停者)过来处理好小孩子们的关系,以免发生不必要的冲突。“中介者”和“调停者”只不过是同一个英语单词“Mediator”的不同翻译罢了。反正最最重要的是:**中介者就是一个处于众多对象,并恰当地处理众多对象之间相互之间的联系的角色。
**

相关文章

  • GeekBand-C++设计模式-Week2

    代理模式 代理模式的定义 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。代理模式的英文叫做...

  • Boolan 设计模式-week2

    单一职责 装饰模式:动态地给一个对象增加一些额外的职责。 http://blog.csdn.net/wuzheka...

  • C++设计模式 week2 (Boolan)

    "对象创新"模式 通过"对象创建"模式绕开new, 来避免对象创建(new)过程中所导致的紧耦合(依赖具体类), ...

  • GeekBand-C++面向对象高级编程(上)-Week2

    1. 拷贝构造函数 功能:可以让一个对象给另一个对象进行初始化,将该对象的内容拷贝过去。不写时编译器会自动生成一个...

  • GeekBand-C++面向对象高级编程(下)-Week2

    对象模型:虚函数表(vtbl)与虚表指针(vptr) 我们知道,C++中,可以通过虚函数来实现多态性,而虚函数是通...

  • 日出時分@2018(7-13/01/2018)

    Week2/52

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 设计模式笔记汇总

    目录 设计原则 “依赖倒置”原则 未完待续... 设计模式 设计模式——策略模式 设计模式——装饰者模式 设计模式...

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • 浅谈JS的一些设计模式

    @(书籍阅读)[JavaScript, 设计模式] 常见设计模式 设计模式简介 设计模式概念解读 设计模式的发展与...

网友评论

      本文标题:GeekBand-C++设计模式-Week2

      本文链接:https://www.haomeiwen.com/subject/oxtdottx.html