设计模式 -- 桥接模式(Bridge Pattern)

桥接模式是一种设计模式,其主要目的是将抽象部分与实现部分分离,使得两者可以独立变化。这种模式在系统需要在两个独立变化的维度进行扩展时特别有用。常见应用场景包括系统需要增加灵活性、避免因继承导致的复杂度增加等。本文引用多个资源,详细介绍了桥接模式的概念、优点和实际应用,并探讨了它在Android系统编程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

handle、body模式 ; 接口模式

应用场景

  • 如果一个系统需要在抽象部分和实现部分增加更多的灵活性,避免两种变化的时候相互影响。

  • 如果不希望使用继承而增加系统的复杂度,可以考虑使用桥接模式。

  • 一个类存在两个独立变化的纬度,且这两个纬度都希望进行扩展。

  • 当一个类存在两个独立变化的维度,且这两个维度都需要进行扩展时。

  • 当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时。

  • 当一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性时。

public class BridgeTest {
    public static void main(String[] args) {
        Implementor imple = new ConcreteImplementorA();
        Abstraction abs = new RefinedAbstraction(imple);
        abs.Operation();
    }
}


//实现化角色
interface Implementor {
    public void OperationImpl();
}


//具体实现化角色
class ConcreteImplementorA implements Implementor {
    public void OperationImpl() {
        System.out.println("具体实现化(Concrete Implementor)角色被访问");
    }
}


//抽象化角色
abstract class Abstraction {
    protected Implementor imple;


    protected Abstraction(Implementor imple) {
        this.imple = imple;
    }


    public abstract void Operation();
}


//扩展抽象化角色
class RefinedAbstraction extends Abstraction {
    protected RefinedAbstraction(Implementor imple) {
        super(imple);
    }


    public void Operation() {
        System.out.println("扩展抽象化(Refined Abstraction)角色被访问");
        imple.OperationImpl();
    }
}

//实现化角色:颜色interface Color {
    String getColor();
}


//具体实现化角色:黄色
class Yellow implements Color {
    public String getColor() {
        return "yellow";
    }
}


//具体实现化角色:红色
class Red implements Color {
    public String getColor() {
        return "red";
    }
}


//抽象化角色:包
abstract class Bag {
    protected Color color;

    public void setColor(Color color) {
        this.color = color;
    }

    public abstract String getName();
}


//扩展抽象化角色:挎包
class HandBag extends Bag {
    public String getName() {
        return color.getColor() + "HandBag";
    }
}


//扩展抽象化角色:钱包
class Wallet extends Bag {
    public String getName() {
        return color.getColor() + "Wallet";
    }
}

当桥接(Bridge)模式的实现化角色的接口与现有类的接口不一致时,可以在二者中间定义一个适配器将二者连接起来。


根据以下文章总结:

  1. Java设计模式:23种设计模式全面解析(超级详细)HYPERLINK http://c.biancheng.net/design_pattern/ 

  2. 3种设计模式详解 https://www.iteye.com/blog/zz563143188-1847029 

  3. Android系统编程思想:设计模式https://github.com/sucese/android-open-source-project-analysis/blob/master/doc/Android%E7%B3%BB%E7%BB%9F%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E7%AF%87/02Android%E7%B3%BB%E7%BB%9F%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E7%AF%87%EF%BC%9A%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#35-%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F

  4. 设计模式 https://blog.youkuaiyun.com/shusheng0007/category_8638565.html

  5. java设计模式 https://blog.youkuaiyun.com/qq_37909508/category_8976362.html

  6. 设计模式 https://www.cnblogs.com/zuoxiaolong/category/509144.html 

  7. 设计模式 在源码中的应用 https://blog.youkuaiyun.com/qq_36970993/category_10620886.html

  8. Android系统设计中存在设计模式分析 https://www.2cto.com/kf/201208/150650.html

  9. Android设计模式系列 - 基于android的各种代码分析各种设计模式 https://www.cnblogs.com/qianxudetianxia/category/312863.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值