当前位置:首页 > 模式算法 > 正文内容

代理模式、桥接模式、中介者模式区别和联系

phpmianshi9年前 (2012-05-08)模式算法977

联系

   

在现实生活中,如房屋中介、买房人、卖房人,房屋中介是一个中介,因为它担任买房人和卖房人之间的相同;

房屋中介也是一个代理,它在卖房人眼前是买房人的代理,在卖房人眼前是买房人的代理;

最后房屋中介也是一个桥接,用于连接买房人和卖房人。那这字面意思相似的三者到底有什么不同的应用场景。


代理模式

    场景

    1. 最常见的就是数据库中间件,他们代理了数据库的访问,访问一个集群跟访问一个单机数据库一样。

    2. 你想访问 Facebook 或者 Twitter ,如何绕过 GFW?找个代理网站

    3. php适合代理模式的__call()方法,当对象调用不存在 或者 受权限限制的方法时,__call()会被自动调用

    4. 生活中有很多实际的案例,比如说“代购”


    特点

    1. 一对一,这个代理只能代表一个对象;

    2. 只能代理一方,也就是 PB 是B的代理,A能够通过PB访问B,但是B不能通过PB访问A;


中介模式

    场景

    1、中国加入 WTO 之前是各个国家相互贸易,结构复杂,现在是各个国家通过 WTO 来互相贸易。

    2、机场调度系统。

    3、MVC 框架,其中C(控制器)就是 M(模型)和 V(视图)的中介者。

    

    特点

    1. 多对多,这些被管理的对象之间都可以通信,它们的业务关系应该是交织在一起的;

    2. A能够通过中介访问B,B也能够通过中介访问A;

    

桥接模式

    

    场景

    1、现需要提供大中小3种型号的画笔,能够绘制5种不同颜色,如果使用蜡笔,我们需要准备3*5=15支蜡笔,也就是说必须准备15个具体的蜡笔类。而如果使用毛笔的话,只需要3种型号的毛笔,外加5个颜料盒,用3+5=8个类就可以实现15支蜡笔的功能。

    2、小米不同型号手机使用不同的底层语音输出软件

    3、不同电脑可以连接不同的手机

    4、发送多种类型的消息(qq,email),每种消息都有不同的消息等级(普通消息,紧急消息等)

    

    特点

    

    1. 一对多的关系,一个类可以有很多其他属性;
    2. 桥接夸大不是对象之间的通信,而是拥有某些属性;


总结

    

1. 我们可以看出,中介者模式和代理模式比较相似,他俩夸大的是通信,桥接模式夸大的时候拥有属性;

    

2. 中介者模式是多对多通信,代理是一对一通信,桥接是一对多;

    

3. 代理是通信只能从一方到另外一方,中介者是双向都可以通信;


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

归并排序,外排序,10G文件500M内存的排序

归并排序,外排序,10G文件500M内存的排序

归并排序可以是一种外排序, 外排序是指利用外存也就是磁盘进行排序的一种简称。典型的应用是hadoop 的 mapreduce 的merge 阶段归并排序的: 假设有n 个元素, 将n 个元素分程x 组...

设计模式概览

设计模式设计模式的世界丰富多彩,比如生产一个个「产品」的工厂模式,衔接两个不相关接口的适配器模式,用不同的方式做同一件事的策略模式,构建步骤稳定、根据构建过程的不同配置构建出不同对象的建造者模式等。面...

php中的桥接模式

概念桥接模式 (Bridge Pattern):将抽象与实现解耦,使得两者可以独立的变化1,如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通...

php中的建造型模式

概念也叫生成器模式,建造型模式用于创建过程稳定,但配置多变的对象。在《设计模式》一书中的定义是:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。建造者模式主要用来通过链式调用生成...

php中装饰器模式

概念装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包...

php中享元模式

概念享元模式(Flyweight),为了节约内存的使用,享元模式会尽量使类似的对象共享内存。在大量类似对象被使用的情况中这是十分必要的。常用做法是在外部数据结构中保存类似对象的状态,并在需要时将他们传...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。