前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之桥接模式

设计模式之桥接模式

作者头像
九转成圣
发布2024-04-15 08:00:16
1190
发布2024-04-15 08:00:16
举报
文章被收录于专栏:csdn

桥接模式(Bridge)

定义

将抽象部分与它的实现部分分离,使它们都可以独立地变化。

使用场景

主要角色

  1. 抽象部分(Abstraction): 定义了系统的高层结构,维护一个对实现部分的引用,并定义了抽象部分的接口。抽象部分的实现通常委托给实现部分。
  2. 扩展抽象部分(RefinedAbstraction): 继承自抽象部分,对抽象部分的接口进行扩展或增强,通常包含一些高层次的业务逻辑。
  3. 实现部分(Implementor): 定义了抽象部分规定的接口,并为这些接口提供具体的实现。实现部分的变化不会影响抽象部分,两者通过组合关系而不是继承关系建立联系。
  4. 具体实现部分(ConcreteImplementor): 继承自实现部分接口,实现具体的业务逻辑。系统可能有多个具体实现部分,它们可以在运行时替换而不影响抽象部分。

类图

示例代码

代码语言:javascript
复制
public abstract class Shape {
    protected Color color;

    public Shape(Color color) {
        this.color = color;
    }

    abstract void draw();
}
代码语言:javascript
复制
public class Circle extends Shape {
    public Circle(Color color) {
        super(color);
    }

    @Override
    void draw() {
        System.out.println(color.getColor() + " Circle");
    }
}
代码语言:javascript
复制
public class Square extends Shape {
    public Square(Color color) {
        super(color);
    }

    @Override
    void draw() {
        System.out.print(color.getColor() + " Square");
    }
}
代码语言:javascript
复制
public interface Color {
    String getColor();
}
代码语言:javascript
复制
public class Red implements Color {

    @Override
    public String getColor() {
        return "Red";
    }
}
代码语言:javascript
复制
public class Green implements Color {
    @Override
    public String getColor() {
        return "Green";
    }
}
代码语言:javascript
复制
public class Client {
    public static void main(String[] args) {
        Shape redCircle = new Circle(new Red());
        Shape greenSquare = new Square(new Green());

        redCircle.draw();
        greenSquare.draw();
    }
}
代码语言:javascript
复制
Red Circle
Green Square

工作中遇到场景

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 桥接模式(Bridge)
  • 定义
  • 使用场景
  • 主要角色
  • 类图
  • 示例代码
  • 工作中遇到场景
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档