桥接模式(Bridge Pattern)
桥接 用于把抽象化与实现化解耦,通过提供抽象化和实现化之间的桥接结构,实现两者解耦,使得两者可以独立变化。
【需求】:类存在依赖关系,且两者都存在多个子类。
(如形状和颜色,形状依赖于颜色,形状存在圆形,方形等;颜色存在红色,蓝色等)
【关键代码】:抽象 与 实现分离, 抽象类与抽象类交互。子类向上造型实现依赖。
【例】:
/** 颜色 */
interface Color {
String name();
}
class Red implements Color {
public String name() {
return "红色";
}
}
class Blue implements Color {
public String name() {
return "蓝色";
}
}
/** 形状 */
abstract class Shape {
protected Color color;
public Shape(Color color) {
this.color = color;
}
abstract void info();
}
class Cricle extends Shape {
public Cricle(Color color) {
super(color);
}
@Override
void info() {
System.out.println("这是一个" + color.name() + "的圆形");
}
}
class Square extends Shape {
public Square(Color color) {
super(color);
}
@Override
void info() {
System.out.println("这是一个" + color.name() + "的方形");
}
}
public class BridgePatternDemo {
public static void main(String[] args) {
Red red = new Red();
Blue blue = new Blue();
Cricle cricle = new Cricle(red);
Square square = new Square(blue);
cricle.info();//这是一个红色的圆形
square.info();//这是一个蓝色的方形
}
}
上述例子中,关键代码在于 Shape 抽象类中依赖Color(实现桥接),实现抽象与抽象交互,抽象与实现解耦。实现高扩展性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。