设计模式:学习笔记(9)——桥接模式

本文深入讲解了设计模式中的一种——桥接模式,并通过一个具体的案例(汽车的不同品牌和特性组合)来阐述如何利用该模式减少类的数量,降低系统的复杂度。

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

设计模式:学习笔记(9)——桥接模式

桥接模式

什么是桥接模式

  桥接模式是设计模式中最复杂的设计模式之一,它把事务对象和其具体行为、具体特征分离开来,使他们可以各自独立变化

  举个例子:有三个品牌的汽车,路虎,宝马,奔驰,每个品牌有两项特征,有无天窗、是否为自动挡。如果我们各自为其创建具体类的话,需要3*2*2=12个类。

  比如单路虎车就有:

    

  桥接模式就是将事务的特征和行为抽象出来,让他们各自变化,再最后把他们组合起来形成需要的各种类,减少了各维度间的耦合

理解

  首先我们将两项特征抽象出来

  

  接着,通过访问器的方式,将这些特征附加到汽车上:

  

  到这里我想,大家都应该知道桥接模式是怎么回事了吧。现在我们需要多少个类呢?即使包含抽象的父类,我们也只需要3+3+4=10个类。

 桥接模式的简单实现

  根据目前我们了解到的知识,我们来实现一辆无天窗的自动挡宝马汽车。

class abstract Transmission{}
class abstract TopWindow{}
class abstract Car{
    protected Transmission t;
    protected TopWindow tw;
    public void setTransmission(Transmission t){this.t = t}
    public void setTopWindow(TopWindow tw){this.tw = tw}
}

class Auto extends Transmission{}
class NoneTopWindow extends TopWindow{}
class BWMCar extends Car{}


/**
 * 组装一辆无天窗的自动挡宝马
 */
public static void main(String[] args) {
    BWMCar bwm = new BWMCar();
    bwm.setTransmission(new Auto());
    bwm.setTopWindow(new NoneTopWindow());
    //组装完成
}

转载于:https://www.cnblogs.com/MrSaver/p/9061949.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值