设计模式-06-适配器模式-[桥接模式]

1. [桥接模式] 是 [对象的适配器模式] 的衍生模式

2.桥接模式简单介绍

        桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。

                          

3.桥接模式简单Demo

      我们到面馆吃面,面的种类有很多 如:牛肉面、鸡肉面;可以添加的辅料也很多如:辣椒、醋等;我们以此为例;

3.1 先定义一个接口 (面馆提供:辅料、调料)

/**
 * 调料
 */
public interface C1_1_Seasoning {
    //添加调料
    String addSeasoning();
}

3.2 具体两个实现(面馆只进了两种调料:加辣、加醋)

/**
 * 添加辣椒
 */
public class C2_1_AddChili implements C1_1_Seasoning {

    @Override
    public String addSeasoning() {
        return "[加辣椒]";
    }
}
/**
 * 添加陈醋
 */
public class C2_2_AddVinegar implements C1_1_Seasoning {

    @Override
    public String addSeasoning() {
        return "[加陈醋]";
    }
}

3.3 定义一个桥持有接口实例 (吃面 - 添加的调料具体吃的时候才知道)

/**
 * 吃面
 */
public abstract class C3_1_Noodles {

    public C1_1_Seasoning seasoning;

    public void setSeasoning(C1_1_Seasoning seasoning) {
        this.seasoning = seasoning;
    }

    public abstract void getNoodles();

}

3.4 定义具体的实现(面馆只能做2种面:定义2种面条-先有了菜单才能上菜)

public class C4_1_EatBeefNoodles extends C3_1_Noodles{

    @Override
    public void getNoodles() {
        System.out.println("点份[牛肉面] "+seasoning.addSeasoning());
    }
}
public class C4_2_EatChickenNoodles extends C3_1_Noodles{

    @Override
    public void getNoodles() {
        System.out.println("点份[鸡肉面] "+seasoning.addSeasoning());
    }
}

3.5 客户端调用(客户要点餐 吃饭了)

public class C5_Client {

    public static void main(String[] args) {
        C3_1_Noodles noodles = new C4_1_EatBeefNoodles();// 吃面-牛肉面
        noodles.setSeasoning(new C2_1_AddChili());// 加辣椒
        noodles.getNoodles();

        noodles = new C4_2_EatChickenNoodles();//吃面-鸡肉面
        noodles.setSeasoning(new C2_2_AddVinegar());// 加陈醋
        noodles.getNoodles();
    }
}

3.6 控制台输出

点份[牛肉面] [加辣椒]
点份[鸡肉面] [加陈醋]

4.为什么使用桥接模式不使用继承呢?

       继承是一种强耦合关系,子类与父类有非常紧密的依赖关系,父类的任何变化 都会导致子类发生变化。因此才使用桥接模式,使用了桥接模式之后,我们的两个维度就像桥梁一样被链接了起来。体现了松耦合的特性

5.桥梁模式的优点

       ● 分离抽象和实现部分 (将面条、调料 都抽象出来 与实现分开)

  桥梁模式分离了抽象部分和实现部分,从而极大地提供了系统的灵活性。让抽象部分和实现部分独立出来,分别定义接口,这有助于对系统进行分层,从而产生更好的结构化的系统。

  ● 更好的扩展性

  桥梁模式使得抽象部分和实现部分可以分别独立地扩展,而不会相互影响,从而大大提高了系统的可扩展性

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值