gpt4 book ai didi

java - 桥接模式示例

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:03 24 4
gpt4 key购买 nike

我花了一些时间研究来自 wikipedia 的桥接模式示例, 但是,我仍然不明白这个桥接模式试图解释什么。

interface DrawingAPI {    public void drawCircle(double x, double y, double radius);}/** "ConcreteImplementor" 1/2 */class DrawingAPI1 implements DrawingAPI {   public void drawCircle(double x, double y, double radius) {        System.out.printf("API1.circle at %f:%f radius %f\n", x, y, radius);   }}/** "ConcreteImplementor" 2/2 */class DrawingAPI2 implements DrawingAPI {   public void drawCircle(double x, double y, double radius) {        System.out.printf("API2.circle at %f:%f radius %f\n", x, y, radius);   }}/** "Abstraction" */interface Shape {   public void draw();                                            // low-level   public void resizeByPercentage(double pct);     // high-level}/** "Refined Abstraction" */class CircleShape implements Shape {   private double x, y, radius;   private DrawingAPI drawingAPI;   public CircleShape(double x, double y, double radius, DrawingAPI drawingAPI) {       this.x = x;  this.y = y;  this.radius = radius;       this.drawingAPI = drawingAPI;   }   // low-level i.e. Implementation specific   public void draw() {        drawingAPI.drawCircle(x, y, radius);   }   // high-level i.e. Abstraction specific   public void resizeByPercentage(double pct) {        radius *= pct;   }}/** "Client" */class Main {   public static void main(String[] args) {       Shape[] shapes = new Shape[2];       shapes[0] = new CircleShape(1, 2, 3, new DrawingAPI1());       shapes[1] = new CircleShape(5, 7, 11, new DrawingAPI2());       for (Shape shape : shapes) {           shape.resizeByPercentage(2.5);           shape.draw();       }   }}

子类 CircleShape 的构造函数有 4 个参数,在它的 draw() 方法中,前 3 个参数被传递给第 4 个参数,它可以是 DrawingAPI 的任何子类。那么这是否意味着使用桥接模式可以增加灵 active 呢?这个例子还能告诉我们更多信息吗?

谢谢!!!!

最佳答案

为什么这是有用的更具体的例子将使它更清楚。假设 DrawingAPI1 封装您的图形驱动程序,而 DrawingAPI2 为您的打印机驱动程序做同样的事情。然后 DrawingAPI 是您的图形系统的通用 API。它允许您在显示器上绘制 CircleShape 并使用相同的代码将其打印在一张纸上,您只需传入不同的 DrawingAPI 实现即可。但是,如果您将 DrawingAPI 传递给 Shape.draw() 而不是将其传递给构造函数,它将更加灵活,因为这样您就可以为显示器和打印机使用相同的对象图。

关于java - 桥接模式示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1805790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com