桥接模式(Bridge Pattern)是一种结构型设计模式,其主要目的是将抽象部分和实现部分分离,使它们可以独立变化。在桥接模式中,一个抽象类与它的实现可以独立演化,从而降低耦合度,提高系统的可扩展性和灵活性。
桥接模式的角色主要包括:
桥接模式的应用场景:
桥接模式的优点:
桥接模式的缺点:
代码实际应用:
形状:圆型,正方形; 颜色:蓝色,红色
/**
* 颜色抽象接口
*/
public interface Color {
/**
* 打印颜色
*/
void applyColor();
}
/**
* 具体颜色的实现-红色
*/
public class RedColor implements Color{
@Override
public void applyColor() {
System.out.println("正在应用红色");
}
}
/**
* 具体颜色的实现-蓝色
*/
public class BlueColor implements Color{
@Override
public void applyColor() {
System.out.println("正在应用蓝色");
}
}
/**
* 图形抽象接口
*/
public interface Shape {
/**
* 打印信息
*/
void draw();
/**
* 给图形赋予颜色
*/
void setColor(Color color);
}
/**
* 形状具体实现类-正方形
*/
public class Square implements Shape{
private Color color;
public Square(Color color) {
this.color = color;
}
@Override
public void draw() {
System.out.println("正在绘制正方形...");
color.applyColor();
}
@Override
public void setColor(Color color) {
this.color = color;
}
}
/**
* 具体图形的实现-圆
*/
public class Circle implements Shape{
private Color color;
public Circle(Color color) {
this.color = color;
}
@Override
public void draw() {
System.out.println("正在绘制圆形...");
color.applyColor();
}
@Override
public void setColor(Color color) {
this.color = color;
}
}
/**
* 桥接模式客户端
*/
public class BridgingDemo {
public static void main(String[] args) {
// 创建圆形 + 蓝色
Circle circle = new Circle(new BlueColor());
circle.draw();
System.out.println("=== === === ");
// 创建长方形 + 红色
Square square = new Square(new RedColor());
square.draw();
System.out.println("=== === ===");
// 更改长方形颜色
square.setColor(new BlueColor());
square.draw();
}
}
打印结果:
Connected to the target VM, address: '127.0.0.1:48007', transport: 'socket'
正在绘制圆形...
正在应用蓝色
=== === ===
正在绘制正方形...
正在应用红色
=== === ===
正在绘制正方形...
正在应用蓝色
Disconnected from the target VM, address: '127.0.0.1:48007', transport: 'socket'