Java设计模式——桥接模式

Java设计模式之桥接模式

桥接模式:将实现和抽象放在两个不同的类层次中而使得他们可以独立改变。

使用

例子:有米线面条饺子三种食物,它们分为加辣不加辣

  • 我们可以把食物写成一个抽象类,三种食物可以分别扩展,还有一个调料抽象类,加辣不加辣扩展其

代码:

  • spicy
public abstract class Spicy {
    public abstract String addSpicy();
}
  • NoSpicy 不加辣
public class NoSpicy extends Spicy{
    public String addSpicy() {
        return "不加辣";
    }
}
  • WithSpicy 加辣
public class WithSpicy extends Spicy{
    public String addSpicy() {
        return  "加辣";
    }
}
  • Launch 午餐类
public abstract class Launch {
    public abstract void orderLaunch();
    public abstract void setSpicy(Spicy spicy);
}
  • Dumplings
public class Dumplings extends Launch{
    private Spicy spicy;
    public void orderLaunch() {
        System.out.println(spicy.addSpicy()+" 饺子");
    }
    public void setSpicy(Spicy spicy) {
        this.spicy = spicy;
    }
}
  • Noodle
public class Noodle extends Launch{
    private Spicy spicy;
    public void orderLaunch() {
        System.out.println(spicy.addSpicy()+" 面条");
    }
    public void setSpicy(Spicy spicy) {
        this.spicy = spicy;
    }
}
  • RiceNoodle
public class RiceNoodle extends Launch{
    private Spicy spicy;
    public void orderLaunch() {
        System.out.println(spicy.addSpicy()+" 米线");
    }
    public void setSpicy(Spicy spicy) {
        this.spicy = spicy;
    }
}
  • 测试
public class BridgeClient {
    public static void main(String[] args) {
        Spicy noSpicy = new WithSpicy();
        Dumplings dumplings = new Dumplings();
        dumplings.setSpicy(noSpicy);
        dumplings.orderLaunch();
        System.out.println("\n");
        Noodle noodle = new Noodle();
        noodle.setSpicy(noSpicy);
        noodle.orderLaunch();
        System.out.println("\n");
        Spicy withSpicy = new WithSpicy();
        RiceNoodle riceNoodle = new RiceNoodle();
        riceNoodle.setSpicy(withSpicy);
        riceNoodle.orderLaunch();
    }
}

输出:
加辣 饺子

加辣 面条

加辣 米线

桥接模式优点:

  • 方便扩展接口和实现
  • 将实现解耦,抽象和实现互不影响

代码地址:GIthub桥接模式


Java设计模式|策略模式

Java设计模式|观察者模式

Java设计模式|装饰者模式

Java设计模式|工厂模式

Java设计模式|命令模式

Java设计模式|适配器模式和外观模式

Java设计模式|模板方法模式

Java设计模式|迭代器模式和组合模式

Java设计模式|状态模式

Java设计模式|代理模式

Java设计模式|单例模式

Java设计模式|备忘录模式

Java设计模式|访问者模式

Java设计模式|复合模式

Java设计模式|桥接模式

Java设计模式|生成器模式

Java设计模式|享元模式/蝇量模式

Java设计模式|原型模式

Java设计模式|责任链模式

Java设计模式|中介者模式

  • 本文作者: dzou | 微信:17856530567
  • 本文链接: http://www.dzou.top/post/4855070c.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!