美文网首页
23种设计模式-桥接模式(卖咖啡)

23种设计模式-桥接模式(卖咖啡)

作者: 王灵 | 来源:发表于2019-03-02 22:01 被阅读0次

定义:将抽象部分与实现部分分离,使它们都可以独立地进行变化。
使用场景:文字很难描述清楚,直接看例子。
一杯可以从杯子大小和是否加糖两个纬度变化。

public abstract class CoffeeAdditives {
    /**
     * 具体往咖啡里添加什么由子类实现
     * @return
     */
    public abstract String addSomething();
}

public abstract class Coffee {
    protected CoffeeAdditives impl;

    public Coffee(CoffeeAdditives impl) {
        this.impl = impl;
    }
    /**
     * 咖啡具体是什么样的由子类决定
     */
    public abstract void makeCoffee();
}

public class LargeCoffee extends Coffee {
    public LargeCoffee(CoffeeAdditives impl) {
        super(impl);
    }

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

public class SmallCoffee extends Coffee {
    public SmallCoffee(CoffeeAdditives impl) {
        super(impl);
    }

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

public class Sugar extends CoffeeAdditives {
    @Override
    public String addSomething() {
        return "加糖";
    }
}

public class Ordinary extends CoffeeAdditives {
    @Override
    public String addSomething() {
        return "原味";
    }
}

public class Main {
    public static void main(String[] args){
        //原味
        Ordinary implOrdinary=new Ordinary();
        //加糖
        Sugar implSugar=new Sugar();
        //大杯原味
        LargeCoffee largeCoffeeOrdinary=new LargeCoffee(implOrdinary);
        largeCoffeeOrdinary.makeCoffee();
        //小杯原味
        SmallCoffee smallCoffeeOrdinary=new SmallCoffee(implOrdinary);
        smallCoffeeOrdinary.makeCoffee();
        //大杯加糖
        LargeCoffee largeCoffeeSugar=new LargeCoffee(implSugar);
        largeCoffeeSugar.makeCoffee();
        //小杯加糖
        SmallCoffee smallCoffeeSugar=new SmallCoffee(implSugar);
        smallCoffeeSugar.makeCoffee();
    }
}
运行结果:
大杯的原味咖啡
小杯的原味咖啡
大杯的加糖咖啡
小杯的加糖咖啡

如果此时咖啡厅为了满足更多人的习惯,推出中杯咖啡怎么办?
定义中杯类扩展Coffee类即可。

public class MiddleCoffee extends Coffee {
    public MiddleCoffee(CoffeeAdditives impl) {
        super(impl);
    }

    @Override
    public void makeCoffee() {
        Log.e("中杯的"+impl.addSomething()+"咖啡");
    }
}

相关文章

  • 23种设计模式-桥接模式(卖咖啡)

    定义:将抽象部分与实现部分分离,使它们都可以独立地进行变化。使用场景:文字很难描述清楚,直接看例子。一杯可以从杯子...

  • 设计模式-桥接模式

    设计模式-桥接模式 定义 桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interface)模式或...

  • 桥接模式

    设计模式:桥接模式(Bridge)

  • 设计模式——桥接模式

    设计模式——桥接模式 最近公司组件分享设计模式,然而分配给我的是桥接模式。就在这里记录我对桥接模式的理解吧。 定义...

  • 设计模式之桥接模式

    设计模式之桥接模式 1. 模式定义 桥接模式又称柄体模式或接口模式,它是一种结构性模式。桥接模式将抽象部分与实现部...

  • 桥接模式

    介绍 桥接模式(Bridge Pattern) 也称为桥梁模式,是结构型设计模式之一。桥接模式的作用就是连接 "两...

  • Java设计模式——桥接模式

    Java设计模式之桥接模式 回顾 上一期分享了适配器模式,主要为了实现解耦 桥接模式 简介 桥接模式是对象的结构模...

  • 设计模式-桥接模式

    桥接模式介绍 桥接模式(Bridge Pattern)也称为桥梁模式,是结构型设计模式之一。顾名思义其与现实中的桥...

  • Android设计模式——桥接模式(七大结构型)

    1.桥接模式介绍 桥接模式(Bridge Pattern)也称为桥梁模式,是七大结构型设计模式之一。 2....

  • 2、桥接模式(结构型)

    第一次接触桥接模式是在刷面试题时,遇到问jdbc主要用到的设计模式是?桥接模式。 桥接模式(Bridge):将抽象...

网友评论

      本文标题:23种设计模式-桥接模式(卖咖啡)

      本文链接:https://www.haomeiwen.com/subject/uptuuqtx.html