Bridge 模式是模式里面最难理解同时也是功能非常强大的一个模式, 下面我们就来谈一谈它的核心思想适用场合欢迎有兴趣的同行一起探讨补充。
设计模式一书中原话描述这一模式: 将抽象与其实现解耦,使它们可以独立的适应变化。
Bridge 模式要解决的问题是: 当一个抽象有不同实现的时候,它可以使抽象和实现相互独立的进行变化。
适用场合: 对业务逻辑进行分析找到变化的部分放在各自的抽象类中,在分析这些抽象类之间的关系,使其能够做到相互独立的类中包含变化,从而使未来发生变化的部分很小程度的或者不影响当前的代码。
简单理解该模式由一个抽象(包括其派生类)和一个实现组成。
看一个具体一点的例子:
比如说常见的画图实现
Java代码
public abstract class Shape {
protected AbstractDrawing myDrawing;
abstract public void draw();
Shape(AbstractDrawing drawing)
{
this.myDrawing = drawing;
}
protected void drawLine(double x1, double y1, double x2, double y2)
{
myDrawing.drawLine(x1, y1, x2, y2);
}
protected void drawCircle(double x, double y, double r)
{
myDrawing.drawCircle(x, y, r);
}
}
public abstract class Shape {
protected AbstractDrawing myDrawing;
abstract public void draw();
Shape(AbstractDrawing drawing)
{
this.myDrawing = drawing;
}
protected void drawLine(double x1, double y1, double x2, double y2)
{
myDrawing.drawLine(x1, y1, x2, y2);
}
protected void drawCircle(double x, double y, double r)
{
myDrawing.drawCircle(x, y, r);
}
}
Java代码
public abstract class AbstractDrawing {
abstract public void drawLine(double x1, double y1, double x2, double y2);
abstract public void drawCircle(double x, double y, double r);
}
public abstract class AbstractDrawing {
abstract public void drawLine(double x1, double y1, double x2, double y2);
abstract public void drawCircle(double x, double y, double r);
}
大小: 6.7 KB
大小: 52.6 KB
查看图片附件
|