10.13
桥接模式
桥接模型(Bridge Pattern)是一种结构设计模型,先在将抽像部分和实际部分解析成,使它们可以独立地改变。桥接模型通通过使用组合关系而不是继承关系,将两个单独立变的维数分离开来,从而提高系统的灵性和可扩展性。
在桥接口模式中,抽像部分和实际部分分别由两个抽像类(或接口)确定。抽像部分包含高级次的抽像方法和发表,而现实部分包含具体的现实细节。通过桥接模型,可以将图像部分分和现实部分独立地进行扩展和变化。
关键词角度:
- 抽象化(抽象):定义抽象部分的接口,并包含一个对现实部分的引用。
- 现实化(实施者):确定现实部分的接口。
- 具体抽像化(Refined Abstraction):扩展抽像部分的接口,实现更多功能。
- 具体实现(Concrete Implementor):具体实现部分的接口。
桥接模型的核心思想是将抽象部分和现实部分分解,使它们可以独立地变化。这样可以避免类似爆炸的问题,当有新的维度需要添加时,只需要添加对应的抽像类和现实类即可可,而不需要修改已有的代码。桥接模式可以提供高系统的灵性、可扩展性和可维护性,特别适用于设计复杂的系统或者需要支持多个平台和多个维数变化的系统。
下面是一个简单的Java代码展示示例,展示了桥接模式的现实:
// 实现化角色 - 形状的接口
interface ShapeAPI {
void draw();
}
// 具体实现化角色 - 红色形状的实现
class RedShape implements ShapeAPI {
@Override
public void draw() {
System.out.println("Drawing shape in red color.");
}
}
// 具体实现化角色 - 蓝色形状的实现
class BlueShape implements ShapeAPI {
@Override
public void draw() {
System.out.println("Drawing shape in blue color.");
}
}
// 抽象化角色 - 形状的抽象类
abstract class Shape {
protected ShapeAPI shapeAPI;
public Shape(ShapeAPI shapeAPI) {
this.shapeAPI = shapeAPI;
}
public abstract void draw();
}
// 扩展抽象化角色 - 圆形
class Circle extends Shape {
public Circle(ShapeAPI shapeAPI) {
super(shapeAPI);
}
@Override
public void draw() {
System.out.println("Drawing a circle shape.");
shapeAPI.draw();
}
}
// 扩展抽象化角色 - 方形
class Square extends Shape {
public Square(ShapeAPI shapeAPI) {
super(shapeAPI);
}
@Override
public void draw() {
System.out.println("Drawing a square shape.");
shapeAPI.draw();
}
}
// 客户端代码
public class BridgePatternExample {
public static void main(String[] args) {
ShapeAPI redShapeAPI = new RedShape();
ShapeAPI blueShapeAPI = new BlueShape();
Shape redCircle = new Circle(redShapeAPI);
Shape blueSquare = new Square(blueShapeAPI);
redCircle.draw();
blueSquare.draw();
}
}