编程-设计模式 7:桥接模式

设计模式 7:桥接模式

定义与目的
  • 定义 :桥接模式将抽象部分与它的实现部分分离,使得它们都可以独立地变化。
  • 目的 :该模式的主要目的是解耦一个类的抽象部分与其实现部分,使得这两部分可以独立地发展和变化。
实现示例

假设我们有一个图形库,需要支持不同平台上的图形绘制。我们可以使用桥接模式来实现这个需求。

java 复制代码
// 定义抽象部分 - 图形接口
public interface Shape {
    void draw();
}

// 定义实现部分 - 绘图接口
public interface DrawAPI {
    void draw();
}

// 具体实现 - 圆形
public class Circle implements Shape {
    private int x, y, radius;
    private DrawAPI drawAPI;

    public Circle(int x, int y, int radius, DrawAPI drawAPI) {
        this.x = x;
        this.y = y;
        this.radius = radius;
        this.drawAPI = drawAPI;
    }

    @Override
    public void draw() {
        drawAPI.draw();
        System.out.println("Drawing a circle with x: " + x + ", y: " + y + ", radius: " + radius);
    }
}

// 具体实现 - Windows 平台绘图
public class WindowsDrawAPI implements DrawAPI {
    @Override
    public void draw() {
        System.out.println("Drawing using Windows API");
    }
}

// 具体实现 - MacOS 平台绘图
public class MacOsDrawAPI implements DrawAPI {
    @Override
    public void draw() {
        System.out.println("Drawing using MacOS API");
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        DrawAPI windowsDrawAPI = new WindowsDrawAPI();
        DrawAPI macOsDrawAPI = new MacOsDrawAPI();

        Shape circleWindows = new Circle(100, 100, 10, windowsDrawAPI);
        Shape circleMacOs = new Circle(100, 100, 10, macOsDrawAPI);

        circleWindows.draw();
        circleMacOs.draw();
    }
}
使用场景
  • 当你需要在抽象和实现之间建立一个松散耦合的关系时。
  • 当你需要独立地扩展抽象和实现的层次结构时。
  • 当一个类的实现细节不应该影响到使用它的客户时。

桥接模式通过将抽象与实现分离,使得两者可以独立地变化和发展。这对于需要在不同的平台上提供相同功能的应用程序非常有用。

小结

桥接模式是一种常用的结构型模式,它可以帮助你解耦抽象与实现,使得两者可以独立地发展。这在需要支持多平台或多版本的系统中特别有用,因为它可以减少代码的重复,并提高系统的可维护性。

相关推荐
晨米酱4 小时前
JavaScript 中"对象即函数"设计模式
前端·设计模式
数据智能老司机9 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机10 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机10 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机10 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
使一颗心免于哀伤10 小时前
《设计模式之禅》笔记摘录 - 21.状态模式
笔记·设计模式
数据智能老司机1 天前
精通 Python 设计模式——创建型设计模式
python·设计模式·架构
数据智能老司机1 天前
精通 Python 设计模式——SOLID 原则
python·设计模式·架构
烛阴1 天前
【TS 设计模式完全指南】懒加载、缓存与权限控制:代理模式在 TypeScript 中的三大妙用
javascript·设计模式·typescript
李广坤1 天前
工厂模式
设计模式