欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java设计模式以虹猫蓝兔的故事讲解桥接模式,

来源: javaer 分享于  点击 15402 次 点评:73

Java设计模式以虹猫蓝兔的故事讲解桥接模式,


目录
  • 什么是桥接模式
    • 优点
    • 缺点
    • 知识点
  • 桥接模式实现
    • 颜色
      • 黄色
      • 红色
    • 裙子
      • 长裙
      • 短裙
    • 测试
    • 总结

      模式: 桥接模式

      案例: 蓝兔宫主买裙子

      什么是桥接模式

      桥接(Bridge)模式的定义如下: 将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

      优点

      1、抽象与实现分离,扩展能力强

      2、符合开闭原则

      3、符合合成复用原则

      4、其实现细节对客户透明

      缺点

      由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这增加了系统的理解与设计难度。

      知识点

      可以将抽象化部分与实现化部分分开,取消二者的继承关系,改用组合关系。

      桥接模式实现

      案例: 蓝兔宫主买裙子

      裙子分两个维度,分别是颜色和样式。

      颜色有黄色和红色;

      样式分长裙和短裙;

      抽象化(Abstraction)角色: 颜色

      扩展抽象化(Refined Abstraction)角色: 黄色和红色

      实现化(Implementor)角色: 样式

      具体实现化(Concrete Implementor)角色: 长裙和短裙

      颜色

      颜色接口,声明一个show()抽象方法

      public interface Color {
          void show();
      }
      

      黄色

      黄色类并实现颜色接口

      public class ColorYellow implements Color {
          @Override
          public void show() {
              System.out.println("黄色的");
          }
      }
      

      红色

      红色类并实现颜色接口

      public class ColorRed implements Color {
          @Override
          public void show() {
              System.out.println("红色的");
          }
      }
      

      裙子

      裙子类,声明一个颜色属性和一个抽象方法

      abstract class Qun {
          protected Color color;
          protected Qun() {
          }
          protected Qun(Color color) {
              this.color = color;
          }
          public abstract void shows();
      }

      长裙

      继承裙子类,并实现抽象方法

      public class QunChang extends Qun {
          protected QunChang() {
          }
          protected QunChang(Color color) {
              super(color);
          }
          @Override
          public void shows() {
              System.out.println("长裙");
              color.show();
          }
      }

      短裙

      继承裙子类,并实现抽象方法

      public class QunDuan extends Qun {
          protected QunDuan() {
          }
          protected QunDuan(Color color) {
              super(color);
          }
          @Override
          public void shows() {
              System.out.println("短裙");
              color.show();
          }
      }

      测试

      new一个红色对象作为参数传给长裙。

      public class Demo {
          public static void main(String[] args) {
              Color color = new ColorRed();
              Qun qun = new QunChang(color);
              qun.shows();
          }
      }
      

      总结

      当一个类内部具备两种或多种变化维度时,使用桥接模式可以解耦这些变化的维度,使高层代码架构稳定。

      到此这篇关于Java设计模式以虹猫蓝兔的故事讲解桥接模式的文章就介绍到这了,更多相关Java桥接模式内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

      您可能感兴趣的文章:
      • Java设计模式之桥接模式的示例详解
      • 深入理解Java设计模式之桥接模式
      • Java设计模式之java桥接模式详解
      • java设计模式--桥接模式详解
      • Java设计模式之桥接模式的实现
      • 23种设计模式(9) java桥接模式
      • Java设计模式之桥接模式实例详解
      • java设计模式之桥接模式(Bridge)
      • Java结构型设计模式中的适配器模式与桥接模式解析
      相关栏目:

      用户点评