ITKeyword,专注技术干货聚合推荐

注册 | 登录

设计模式(十二)桥模式(Bridge)-结构型

Dream_angel_Z 分享于 2015-05-04

推荐:[设计模式笔记]二. 结构型模式--8.Bridge模式(桥模式)(一)

结构型模式 Bridge模式(桥模式) 一. 意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化 二. 适用性 2.1. 你不希望在抽象和它的实现部分之间有一个固定

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

桥模式Bridge引文

根据面向对象的设计原则,应该尽量使用组合而不是继承。桥模式将抽象与其实现解耦,使他们可以分别独立地变化,是继承的一种代替方式。
对于两个类之间需要进行关联时,不要直接在一个类的代码中调用另一个类的代码,而是要通过这些设计模式,在两个类之间建立一个类似的缓冲器的类,从而将直接关联的两个类进行解耦,以保证以后当一个类的接口发生变化时不会影响另一个类的使用。

实现原理图

这里写图片描述
桥模式实现原理图

桥模式试讲抽象和实现分离实现解耦,使他们可以分别 独立地变化桥模式也是继承关系的一个替代方案。桥模式一共由四部分组成: 抽象类抽象类的继承类实现类实现类的继承类

实现代码

实现类接口的示意代码如下:

public interface Implement {
    void operation1();
}

抽象类的示意代码如下:

推荐:Bridge Pattern(桥模式)

首先要了解一下桥模式, 桥的作用是什么 连接,桥起的是连接的作用.引用别人的一个例子,写日志. 我想往数据库中写日志,一个是MySQL数据库,另一个是MSSQL数据库.就

public abstract class Interface {
    Implement impl;
    public Interface(Implement impl){
        this.impl = impl;
    }
    public void operation1(){
        this.impl.operation1();
    }
}

抽象类的继承类的示意代码如下:

public class Interface1 implements Interface {
    public Interface1(Implement impl){
        super(impl);
    }
    public void operation1(){
        impl.operation1();
    }
}

抽象类的另一个继承类

public class Interface2 implements Interface {
    public Interface2(Implement impl){
        super(impl);
    }
    public void operation1(){
        impl.operation1();
    }
}

实现类的继承类的示意代码如下:

public class Implement1 implements Implement {
    public void operation1(){
    }
}

实现类的另一个继承类的示意代码如下:

public class Implement1 implements Implement {
    public void operation1(){
    }
}

现实应用

销售电脑案例
电脑可分为:台式、笔记本、平板电脑;
还可以分为不同的品牌:戴尔、苹果、联想等;
如何设计类才算合理?

桥梁模式的优点

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

桥梁模式的使用场景

  • 不希望或不适用使用继承的场景
    例如继承层次过渡、无法更细化设计颗粒等场景,需要考虑使用桥梁模式。
  • 接口或抽象类不稳定的场景
    明知道接口不稳定还想通过实现或继承来实现业务需求,那是得不偿失的,也是比较失败的做法。
  • 重用性要求较高的场景
    设计的颗粒度越细,则被重用的可能性就越大,而采用继承则受父类的限制,不可能出现太细的颗粒度。

桥梁模式的注意事项

  • 使用桥梁模式时主要考虑如何拆分抽象和实现,并不是一涉及继承就要考虑使用该模式,那还要继承干什么。
  • 桥梁模式的意图还是对变化的封装,尽量把可能变化的因素封装到最细、最小的逻辑单元中,避免风险扩散。
  • 系统设计时,发现类的继承有N层时,可以考虑使用桥梁模式。

推荐:[设计模式-结构型]桥接(Bridge )

概括 名称 Bridge 结构 动机 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 适用性 你不希望在抽象和它的实现部分之间有一个固定的绑定关系。例如这

桥模式Bridge引文 根据面向对象的设计原则,应该尽量使用组合而不是继承。桥模式将抽象与其实现解耦,使他们可以分别独立地变化,是继承的一种代替方式。 对于两个类之间需要进行关联时,不要直

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。