【玩转23种Java设计模式】结构型模式篇:桥接模式

x33g5p2x  于2021-12-30 转载在 Java  
字(1.5k)|赞(0)|评价(0)|浏览(194)

软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

汇总目录链接:【玩转23种Java设计模式】学习目录汇总整理

一、简介

桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(interface)模式。

  桥梁模式所涉及的角色有:

  • 抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。
  • 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。
  • 实现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。
  • 具体实现化(Concrete Implementor)角色:这个角色给出实现化角色接口的具体实现。

二、实例

1、手机品牌抽象类(AbstractBrand)

public abstract class AbstractBrand {
    protected AbstractSoftware abstractSoftware;

    // 设置手机软件
    public void setSoftware(AbstractSoftware abstractSoftware) {
        this.abstractSoftware = abstractSoftware;
    }

    // 运行
    public abstract void run();
}

2、手机软件抽象类(AbstractSoftware)

public abstract class AbstractSoftware {
    public abstract void run();
}

3、华为手机(HuaWeiPhone)

public class HuaWeiPhone extends AbstractBrand {
    @Override
    public void run() {
    	System.out.println("华为手机");
        abstractSoftware.run();
    }
}

4、游戏中心软件(GameCenter)

public class GameCenter extends AbstractSoftware {
    @Override
    public void run() {
        System.out.println("运行游戏中心");
    }
}

5、测试类

public class Main {
    public static void main(String[] args) {
        AbstractBrand abstractBrand = new HuaWeiPhone();
        abstractBrand.setSoftware(new GameCenter());
        abstractBrand.run();
    }
}

控制台输出:

华为手机
运行游戏中心

三、总结

1、优点

  • 抽象和实现分离。桥梁模式完全是为了解决继承的缺点而提出的设计模式。
  • 优秀的扩展能力。
  • 实现细节对客户透明。客户不用关心细节的实现,它已经由抽象层通过聚合关系完成了封装。

2、缺点

  • 会增加系统的理解与设计难度。由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

3、应用场景

  • 不希望或不适用使用继承的场景。
  • 接口或抽象类不稳定的场景。
  • 重用性要求较高的场景。

相关文章