Bridge模式的概念
Bridge模式是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。
意图:将一组实现与另一组使用他们的对象分离
问题:一个抽象类 的派生类 必须使用多个实现 ,但出现类数量增长
尽量用最简单的例子来说明:我来小的时候画图,画图,画三角形,长方形,还有不同颜色的铅笔来填色,要完成这样一个简单的任务。
假如我们为每种形状设计一个类,每种颜色设计一种类,那图案的种类将是恐怖级的,假如有十种图形,十种颜色,将会出现一百种组合,要能表示所有的图案,将至少要一百个类。
Bridge模式可以很好的解决这类问题。
Client
Bridge模式的使用者
Abstraction
抽象类接口(接口或抽象类)
维护对行为实现(Implementor)的引用
Refined Abstraction
Abstraction子类
Implementor
行为实现类接口 (Abstraction接口定义了基于Implementor接口的更高层次的操作)
ConcreteImplementor
Implementor子类
把象和实现分离开来,把填充颜色的行为抽象为一个接口:
//填充颜色行为抽象成接口
public interface FixColor {
public void daub(); //涂上颜色方法
}
//涂上绿色颜色
public class FixGreen implements FixColor{
public void daub(){
System.out.println("daub green");
}
}
public class FixRed implements FixColor{
public void daub(){
System.out.println("daub red");
}
}
//抽象形装 填充颜色属性和 着色方法
public abstract class Shape {
FixColor oneColor;
public abstract void doColor();
}
public class Circle extends Shape{
public void setColer(FixColor fixcolor ){
this.oneColor=fixcolor;
}
public void doColor(){
oneColor.daub(); //涂上一种颜色
}
}
别的图形省略........
public class Cilent {
public static void main(String[] args){
Circle circle= new Circle();
FixGreen green =new FixGreen();
circle.setColer(green);
circle.doColor();
}
}
桥接模式关键是把抽象与行为实现相分离,动态结合。