package com.winner.bridge_pattern;
/**
* 桥接设计模式是一种结构型设计模式,它允许将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过创建桥接接口来实现不同的抽象与实现之间的连接。
* 它可以在不影响客户端代码的情况下,动态地将抽象部分和实现部分组合起来。
*
* 想象一下你要开发一个画图软件,其中有多种形状(如圆形、矩形等)和多种颜色(如红色、蓝色等)。
* 使用桥接模式,你可以将形状和颜色分别作为抽象部分和实现部分,然后通过桥接接口将它们连接起来
*
* 定义形状抽象类
*
* 在这个示例中,Color接口定义了不同颜色的实现,例如Red和Blue。Shape是一个抽象类,
* 它使用Color接口作为桥接接口,将不同的形状(如Circle和Rectangle)与颜色实现部分连接起来。
*
* @Author wangxinle5
* @since 2024-04-25
*/
// 定义颜色接口
interface Color {
void applyColor();
}
// 实现不同颜色类
class Red implements Color {
@Override
public void applyColor() {
System.out.println("Applying red color");
}
}
class Blue implements Color {
@Override
public void applyColor() {
System.out.println("Applying blue color");
}
}
// 定义形状抽象类
abstract class Shape {
protected Color color; // 使用桥接接口
protected Shape(Color color) {
this.color = color;
}
public abstract void draw();
}
// 实现不同形状类
class Circle extends Shape {
public Circle(Color color) {
super(color);
}
@Override
public void draw() {
System.out.print("Drawing circle with ");
color.applyColor(); // 使用颜色接口
}
}
class Rectangle extends Shape {
public Rectangle(Color color) {
super(color);
}
@Override
public void draw() {
System.out.print("Drawing rectangle with ");
color.applyColor(); // 使用颜色接口
}
}
// 测试桥接模式
public class BridgePatternDemo {
public static void main(String[] args) {
// 使用不同颜色创建形状 Shape抽象类有桥接接口 Circle和Rectangle就可以用桥接接口的方法
Shape redCircle = new Circle(new Red());
Shape blueRectangle = new Rectangle(new Blue());
// 绘制形状
redCircle.draw();
blueRectangle.draw();
}
}