java桥接模式案例

  • 桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立变化。在桥接模式中,抽象类和它的实现类之间使用组合/聚合关系,而不是继承关系。这样,客户端代码可以针对抽象编程,而实现细节则可以在运行时动态地指定。
  • 场景:
    假设我们要设计一个图形绘制系统,其中包含了多种形状(如圆形、矩形、三角形)和多种绘图方式(如使用Java 2D API、OpenGL等)。我们希望能够在不修改形状类的情况下,灵活地添加新的绘图方式,反之亦然
    实现:
  1. Shape接口:定义所有形状共有的方法。
public interface Shape {
    void draw();
}
  1. Circle、Rectangle、Triangle类:实现Shape接口,并提供各自的draw()方法的具体实现。
public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a Circle");
    }
}

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a Rectangle");
    }
}

public class Triangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a Triangle");
    }
}
  1. DrawAPI接口:定义绘图方式的接口。
public interface DrawAPI {
    void draw(Shape shape);
}
  1. Java2DDrawAPI、OpenGLDrawAPI类:实现DrawAPI接口,并提供各自的draw()方法的具体实现。
public class Java2DDrawAPI implements DrawAPI{

    @Override
    public void draw(Shape shape) {
        System.out.print("Using Java 2D API to draw: "+shape.getClass().getSimpleName());
        shape.draw();
    }
public class OpenGLDrawAPI implements DrawAPI{

    @Override
    public void draw(Shape shape) {
        System.out.print("Using OpenGL API to draw :"+shape.getClass().getSimpleName());
        shape.draw();
    }
}
  1. 客户端代码:使用桥接模式来绘制图形。
public class Client {
    public static void main(String[] args) {
        Circle circle = new Circle();
        Rectangle rectangle = new Rectangle();
        Triangle triangle = new Triangle();

        //使用Java 2D API绘制图形
        Java2DDrawAPI java2DDrawAPI = new Java2DDrawAPI();
        java2DDrawAPI.draw(circle);
        java2DDrawAPI.draw(rectangle);
        java2DDrawAPI.draw(triangle);

        //使用OpenGL API绘制图形
        OpenGLDrawAPI openGLDrawAPI = new OpenGLDrawAPI();
        openGLDrawAPI.draw(circle);
        openGLDrawAPI.draw(rectangle);
        openGLDrawAPI.draw(triangle);
    }

代码结果输出:

Using Java 2D API to draw: CircleDrawing a Circle
Using Java 2D API to draw: RectangleDrawing a Rectangle
Using Java 2D API to draw: TriangleDrawing a Triangle
Using OpenGL API to draw :CircleDrawing a Circle
Using OpenGL API to draw :RectangleDrawing a Rectangle
Using OpenGL API to draw :TriangleDrawing a Triangle
  • 在这个案例中,Shape接口定义了所有形状共有的方法,而DrawAPI接口定义了绘图方式的接口。Circle、Rectangle、Triangle类实现了Shape接口,Java2DDrawAPI和OpenGLDrawAPI类实现了DrawAPI接口。客户端代码通过组合Shape对象和DrawAPI对象来绘制图形,实现了抽象部分与实现部分的解耦。这样,我们可以很容易地添加新的形状或绘图方式,而不需要修改现有的代码。
posted @ 2024-04-18 10:13  文采杰出  阅读(15)  评论(0编辑  收藏  举报