您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页深入理解23种设计模式(6) -- 桥接模式

深入理解23种设计模式(6) -- 桥接模式

来源:欧得旅游网

基本介绍

  • 桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以改变
  • 是一种结构型设计模式
  • Bridge模式给予类的最小设计原则,通过使用封装、聚合及继承等行为让不同等类承担不同等职责。它等主要特点是把抽象(Abstraction)与行为实现(Implementation)分离,从而可以保持各部分等性以及应对他们等功能扩展

手机操作问题

现在对不同的手机类型的不同品牌实现操作编程(比如:开机、上网、打电话)

新建品牌接口

public interface Brand {

    void open();

    void close();

    void call();
}

实现类 小米手机

public class Xiaomi implements Brand {
    @Override
    public void open() {
        System.out.println("小米手机开机");
    }

    @Override
    public void close() {
        System.out.println("小米手机关机");
    }

    @Override
    public void call() {
        System.out.println("小米手机打电话");
    }
}

实现类 VIVO手机

public class Vivo implements Brand{
    @Override
    public void open() {
        System.out.println("vivo手机开机");
    }

    @Override
    public void close() {
        System.out.println("vivo手机关机");
    }

    @Override
    public void call() {
        System.out.println("vivo手机打电话");
    }
}

新建手机抽象类

public abstract class Phone {
    //组合品牌
    private Brand brand;


    public Phone(Brand brand) {
        this.brand = brand;
    }

    protected void open(){
        this.brand.open();
    }


    protected void close(){
        this.brand.close();
    }

    protected void call(){
        this.brand.call();
    }

}

新建折叠式手机类

public class FoldedPhone extends Phone{

    public FoldedPhone(Brand brand) {
        super(brand);
    }


    public void open(){
        super.open();
        System.out.println(" 折叠式手机 ");
    }


    public void close(){
        super.close();
        System.out.println(" 折叠式手机 ");
    }

    public void call(){
        super.call();
        System.out.println(" 折叠式手机 ");
    }
}

测试

public class Client {

    public static void main(String[] args) {
        Phone phone = new FoldedPhone(new Xiaomi());
        phone.open();
        phone.call();


        Phone phone2 = new FoldedPhone(new Vivo());
        phone2.open();
        phone2.call();
    }
}

当我们新增品牌 或者手机类型当时候 只需要增加一个类 就好

增加直立式手机

public class UpRightPhone extends Phone {

    public UpRightPhone(Brand brand) {
        super(brand);
    }


    public void open(){
        super.open();
        System.out.println(" 直立式手机 ");
    }


    public void close(){
        super.close();
        System.out.println(" 直立式手机 ");
    }

    public void call(){
        super.call();
        System.out.println(" 直立式手机 ");
    }
}

测试

public class Client {

    public static void main(String[] args) {
        Phone phone = new FoldedPhone(new Xiaomi());
        phone.open();
        phone.call();


        System.out.println("-=============================-");

        Phone phone2 = new UpRightPhone(new Vivo());
        phone2.open();
        phone2.call();
    }
}

  • 在JDBC源码中就使用类桥接模式


因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务