桥接模式和代理模式的区别
2016-07-22 17:17
756 查看
代理模式:在调用者和被调用者之间加一个间接层来控制对象间的访问,代理和被调用对象实现相同的接口,通过间接层可以做缓存,安全控制,预处理等等一系列操作,但是有一个点必须记住,就是代理类和被调用类要实现统一的这接口,这样对于客户来说,你的间接层对他就是不可见的,客户不需要知道你做了代理,他只需要你给他提供服务的接口不变即可。
桥接模式:也是组合模式中最常用的,用来分离抽象和行为,让抽象和行为能各自单独的变化。引申为如果一个类面临着几个方面的变化,我们将各个方面的变化抽离出来,定义成接口,然后再把接口组合成一个类来实现原有的功能,这里体现面向对象的两个原则(接口隔离原则、优先使用对象组合然后考虑继承)。
桥接模式可以这样来做类比,比如说人这个类,每个人都是人类的一个子类,但是每个人的行为却又不一样,如果把所有的行为都定义在人这个类里面,那么很多很多的人就会有很多很多的子类,如果我们把行为抽离出来,比如说现在有2个维度:脾气和爱好,有的人脾气好,有的人脾气坏,有的人喜欢看书,有的人喜欢看电视,如果我们把脾气和爱好作为一个类来抽象,就会产生4个子类,而且每个子类里面两个行为,如果我们把脾气和爱好抽离,就会发现,只需写两组子类,每个子类里面一个行为,然后这样组合,更急灵活,如果按照原始的方式,那么
子类的的数目会随着每个维度行为的变化倍数的增长,抽离和能减少子类,并且采用组合方式更能灵活的切换对象的行为,而不用生成新的子类。
桥接模式:也是组合模式中最常用的,用来分离抽象和行为,让抽象和行为能各自单独的变化。引申为如果一个类面临着几个方面的变化,我们将各个方面的变化抽离出来,定义成接口,然后再把接口组合成一个类来实现原有的功能,这里体现面向对象的两个原则(接口隔离原则、优先使用对象组合然后考虑继承)。
桥接模式可以这样来做类比,比如说人这个类,每个人都是人类的一个子类,但是每个人的行为却又不一样,如果把所有的行为都定义在人这个类里面,那么很多很多的人就会有很多很多的子类,如果我们把行为抽离出来,比如说现在有2个维度:脾气和爱好,有的人脾气好,有的人脾气坏,有的人喜欢看书,有的人喜欢看电视,如果我们把脾气和爱好作为一个类来抽象,就会产生4个子类,而且每个子类里面两个行为,如果我们把脾气和爱好抽离,就会发现,只需写两组子类,每个子类里面一个行为,然后这样组合,更急灵活,如果按照原始的方式,那么
子类的的数目会随着每个维度行为的变化倍数的增长,抽离和能减少子类,并且采用组合方式更能灵活的切换对象的行为,而不用生成新的子类。
相关文章推荐
- Fresco 与 百度地图SDK冲突解决办法
- SwipeRefreshLayout + RecyclerView 实现 上拉刷新 和 下拉刷新
- [转] Android:微信授权登录与微信分享全解析
- 注意传session时要 配置tomcat 下的 server.xlm
- hdu5738 Eureka(数学)
- 函数时间复杂度的计算详解(转自CSDN)
- 微信自定义分享功能
- java--04
- Java处理excel两种不同的方式
- Maven 修改本地库和国内库镜像
- 直播推流端网络优化策略
- myeclipse各菜单项说明
- CALayer
- ros的技术准备
- HDOJ 5734 (2016多校联合训练 Training Contest 2) Acperience
- Ansible之playbook
- 存储技术
- Openstack liberty 云主机迁移源码分析之静态迁移1
- 49.View the Exhibit to examine the output of the DBA_OUTSTANDING_ALERTS view.
- 高可用集群技术之heartbeat+NFS实现web服务高可用(文本方式配置接口--gui图形配置)