Java设计模式笔记之桥接模式

【写在模式之前的一些话】

对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。

1.前言

桥接模式是结构型设计模式,桥接模式就如其名字一样起着现实中“桥”的作用——连接两边。

2.定义

桥接模式:将抽象部分与实现部分分离,使它们都可以独立地进行变化。

3.UML图


Abstraction:抽象部分。保持一个对实现部分对象的引用,抽象部分中的方法需要调用实现部分的对象来实现,该类一般为抽象类。

Implementor:实现部分。接口或抽象形式。提供基本的操作。

RefinedAbstraction:优化的抽象部分。抽象部分的具体实现,对抽象部分方法进行扩展和完善。

ConcreteImplementorA/ConcreteImplementorB:实现部分的具体实现。完善实现部分中方法定义的具体逻辑。

Client:客户端

4.简单示例代码

//对应UML图中的抽象部分
public abstract class Coffee {
    protected CoffeeAdditives impl;

    //保持对CoffeeAdditives的引用,便于调用具体的实现
    public Coffee(CoffeeAdditives impl){
        this.impl = impl;
    }

    //咖啡具体什么样子由子类来决定
    public abstract void makeCoffee();
}

//对应UML图中的Implementor实现部分
public abstract class CoffeeAdditives {

    public abstract String addSomething();

}

public class LargeCoffee extends Coffee {

    public LargeCoffee(CoffeeAdditives impl) {
        super(impl);
    }

    @Override
    public void makeCoffee() {
        Log.d("zsf","大杯的" + impl.addSomething() + "咖啡");
    }
}

public class SmallCoffee extends Coffee {

    public SmallCoffee(CoffeeAdditives impl) {
        super(impl);
    }

    @Override
    public void makeCoffee() {
        Log.d("zsf","小杯的" + impl.addSomething() + "咖啡");
    }
}

public class Original extends CoffeeAdditives {
    @Override
    public String addSomething() {

        return "原味";
    }
}

public class Sugar extends CoffeeAdditives {
    @Override
    public String addSomething() {

        return "加糖";
    }
}

        //原味咖啡
        Original original = new Original();
        //糖
        Sugar sugar = new Sugar();

        //大杯咖啡不加糖
        LargeCoffee largeCoffee = new LargeCoffee(original);
        largeCoffee.makeCoffee();

        //大杯咖啡加糖
        LargeCoffee largeCoffee1 = new LargeCoffee(sugar);
        largeCoffee1.makeCoffee();

        //小杯咖啡不加糖
        SmallCoffee smallCoffee = new SmallCoffee(original);
        smallCoffee.makeCoffee();

        //
        SmallCoffee smallCoffee1 = new SmallCoffee(sugar);
        smallCoffee1.makeCoffee();

输出:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值