java常用设计模式的学习笔记(桥接模式)

java 常用设计模式——桥接模式(Bridge pattern)

目录

  • java 常用设计模式——桥接模式(Bridge pattern)
  • 一、桥接模式
    • 1. 例子
    • 2. 简介
  • 二、主要实现
  • 三、使用场景


一、桥接模式

1. 例子

为了更好的理解和学习桥接模式,举一例子,先。例子参考自: 链接.

(1)如下图,有4种形状,3种颜色,用户想要得到不同颜色不同形状的图形,可以创建3x4=12个类去完成这一需求。那么创建的类将随着颜色和形状的增加而急速增加,这也将增加系统的复杂性,这些类中代码的重复性也很高。

java常用设计模式的学习笔记(桥接模式)_第1张图片
(2)如下图,可以将形状和颜色分开,创建各自的父类,之后创建实现各自的继承类(4+3=7),然后通过某种连接将这些继承类组合成所需的图形。那么桥接模式刚好满足了这一需求,所需类的创建个数也减少了很多。
java常用设计模式的学习笔记(桥接模式)_第2张图片

2. 简介

桥接模式是一种结构型设计模式,通过提供抽象化和实现化之间的桥接结构实现两者的解耦。所谓解耦就是让抽象部分和实现部分之间的关联性降低,让他们独立的变化而彼此不受影响。

二、主要实现

这里主要演示怎么桥接他们的实现部分和抽象部分的代码。
假如图形的父类是Shape,继承类有CircleShape,SquareShape等等,颜色的父类是Color,继承类有White,Black。

代码如下(桥接):

//在Shape类中声明一个颜色对象
protected Color color;
//构造方法,创建Shape对象时与color进行桥接
protected Shape(Color color){
	this.color=color;
}

代码如下(调用):

//创建白色圆形
Shape whiteCircle=new CircleShape(new White());
//创建黑色正方形
Shape blackSquare=new SquareShape(new Black());
}

桥接代码部分就是桥接方法的主要代码,调用代码部分是最后组合得到所需的形状。


三、使用场景

使用桥接模式的优点:

  1. 抽象与实现分离,两者可以独立的变化而互不影响,从而降低了相互依赖性。
  2. 优秀的扩展能力,可以独立的对抽象部分和实现部分进行扩充。
  3. 实现细节对客户透明。

基于这些优点桥接模式可以用于:

  1. 我们在设计时不希望抽象部分和实现部分有一个固定的绑定关系,就像上述例子中的第一张图那样,通过静态的继承去实现,这样便失去了灵活性,并随着类的不断增加而使系统相当复杂。
  2. 抽象部分和实现部分能独立的进行扩充,比如手机和音乐播放器,手机可以有苹果,安卓,音乐播放器可以有酷狗,网易云,之后都会扩展出不同类型。

你可能感兴趣的:(设计模式,设计模式,java)