Java设计模式之 桥接模式,简单易于理解

一、桥接模式概念

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。
在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分,如果用继承方式,m种形状和n种颜色的图形就有mxn种,不但对应的子类很多,而且扩展困难。

设想如果要绘制地形、圆、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颤色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:

第一种设计方案是为每一种形状都提供一套各种颜色的版本
在这里插入图片描述

在这里插入图片描述

这两种方法明显比较复杂,不易扩展。

下面我们看看桥接模式
在这里插入图片描述
这种方式看起来就很不错,想加一种颜色还是图形都比较方便哈哈哈。

二、接下面我们看代码解析

1、我们先创建一个属于颜色的接口

public interface Color{
   public void print();
}

2、我们创建各种颜色实现颜色接口

public interface Gray implements Color{
   public void print(){
     System.out.println("这是灰色")
  }
}
public interface Red implements Color{
   public void print(){
     System.out.println("这是红色")
  }
}

3、颜色创建好了,我们现在创建一个图形的抽象类,用来引用颜色类

public abstract class Shape{
  private Color color;
  
  public Color getColor(){
     return color;
   }
   public void setColor(Color color){
     this.color=color;
   }
   
  public Shape(Color color){
   super();
   this.color=color;
 }
 //打印形状
 public abstract void show();
  
}

4、创建一个图形实现类

public class Circle extents Shape{
   public Circle(Color color){
     super(color);
   }
public void show(){
   System.out.println("圆形");
   this.getColor().print();
 }
}

5、好了,接下来我们测试一下

public class Test{
      Color red=new Red();
      Color gray=new Gray();
      Shape circle=new Circle(red);
      circle.show();
}

6、运行结果:
圆形
这是红色

三、桥接模式的优缺点

优点
1)分离抽象接口极其实现部分。
2)桥接模式有时类似于多继承方素,但是多继承方案违背了类的单一职责原则(即一
个类只有一个变化的原因),复用性比较差,而且多继承结构中类的个数非常庞大,
桥接模式是比多继承方案重好的解决方法。
3)桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要
修改原有系统。

缺点
1)桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。
2)桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章