经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » 设计模式 » 查看文章
结构型模式之桥梁模式
来源:cnblogs  作者:yewen1234  时间:2018/12/7 9:28:46  对本文有异议

桥梁模式(Bridge Pattern)也称桥接模式,是一种简单的、不常使用的设计模式。

定义:

  • 将抽象和实现解耦,使得两者可以独立地变化。

桥梁模式类图如下所示。

桥梁模式有以下4个角色:

  • 抽象化(Abstraction)角色:定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类。
  • 实现化(Implementor)角色:给出实现化角色的接口,但不给出具体实现。
  • 修正抽象化(RefinedAbstraction)角色:扩展抽象化角色,它引用实现化角色并对抽象化角色进行修正。
  • 具体实现化(ConcreteImplementor)角色:对实现化角色接口中的方法进行具体实现。

Implementor

  1. // 实现化角色
  2. public interface Implementor {
  3. // 方法的实现化声明
  4. public void operationImp();
  5. }

ConcreteImplementor.java

  1. // 具体实现化角色
  2. public class ConcreteImplementor implements Implementor {
  3. @Override
  4. public void operationImp() {
  5. }
  6. }

Abstraction.java

  1. // 抽象化角色
  2. public abstract class Abstraction {
  3. // 定义对实现化角色的引用
  4. private Implementor imp;
  5. public Abstraction(Implementor imp) {
  6. this.imp = imp;
  7. }
  8. public void operation() {
  9. this.imp.operationImp();
  10. }
  11. }

RefinedAbstraction.java

  1. // 修正抽象化角色
  2. public class RefinedAbstraction extends Abstraction {
  3. public RefinedAbstraction(Implementor imp) {
  4. super(imp);
  5. }
  6. // 修正父类的方法
  7. public void operation() {
  8. // 业务代码
  9. }
  10. }

Client.java

  1. public class Client {
  2. public static void main(String[] args) {
  3. // 定义一个实现化角色
  4. Implementor imp = new ConcreteImplementor();
  5. // 定义一个抽象化角色
  6. Abstraction abs = new RefinedAbstraction(imp);
  7. // 执行
  8. abs.operation();
  9. }
  10. }

优点:

  • 抽象和实现分离是桥梁模式的主要特点,是为了解决继承的缺点而提出的设计模式。在该模式下,实现可以不受抽象的约束,不用绑定在一个固定的抽象层次上。
  • 实现对客户透明,客户端不用关心细节的实现,它已经由抽象层通过聚合关系完成了封装。
  • 提高灵活性和扩展性。

使用场合:

  • 如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。
  • 设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。
  • 一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合,
  • 不希望或不适用使用继承的场合。继承具有强入侵性质,即父类有的方法,子类必须有;桥梁模式是弱关系联系。因此对于比较明确不发生变化的,则可以通过继承完成;若不能确定是否会发生变化,则通过桥梁模式来解决。

注意:

  • 使用桥梁模式主要考虑如何拆分抽象和实现,桥梁模式的意图还是对变化的封装,尽量把可能变化的因素封装到最细、最小的逻辑单元中,避免风险扩散。

摘自:

青岛东合信息技术有限公司 . 设计模式(Java版) .  电子工业出版社,2012,93-95.

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号