文章目录
- 前言
- 一、桥接模式(Bridge)-基本介绍
- 完整代码
- Brand 手机接口,定义行为
- Vivo 实现 Brand 接口
- XiaoMi 实现 Brand 接口
- Phone 抽象桥接类
- FoldedPhone 实现桥接 (折叠样式手机)
- UpRightPhone 实现桥接(直立样式手机)
- Clint 测试桥接模式
- ===========================================================
- FlipPhone 新增实现桥接(翻盖样式手机)
- 测试类测试
- ===========================================================
 
- 二、桥接模式在JDBC的源码剖析
- 三、桥接模式的注意事项和细节
- 四、桥接模式其它应用场景
前言

 
 
一、桥接模式(Bridge)-基本介绍

 
完整代码
Brand 手机接口,定义行为
package tanchishell.SJMS.bridge;
//接口定义手机的行为
public interface Brand {
    void open();
    void close();
    void call();
}
Vivo 实现 Brand 接口
package tanchishell.SJMS.bridge;
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手机打电话");
    }
}
XiaoMi 实现 Brand 接口
package tanchishell.SJMS.bridge;
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("小米手机打电话");
    }
}
Phone 抽象桥接类
package tanchishell.SJMS.bridge;
//抽象建立桥接
public abstract class Phone {
    //组合品牌
    private Brand brand;
    //构造器 抽象建立桥接
    public Phone(Brand brand) {
        super();
        this.brand = brand;
    }
    protected void open() {
        this.brand.open();
    }
    protected void close() {
        brand.close();
    }
    protected void call() {
        brand.call();
    }
}
FoldedPhone 实现桥接 (折叠样式手机)
``package tanchishell.SJMS.bridge;
//折叠样式手机 实现桥接
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(" 折叠样式手机 ");
    }
}
UpRightPhone 实现桥接(直立样式手机)
package tanchishell.SJMS.bridge;
//直立式手机 实现桥接
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(" 直立样式手机 ");
    }
}
Clint 测试桥接模式
package tanchishell.SJMS.bridge;
public class Clint {
    public static void main(String[] args) {
        //获取折叠式手机 (样式 + 品牌 )
        Phone phone1 = new FoldedPhone(new XiaoMi());
        phone1.open();
        phone1.call();
        phone1.close();
        System.out.println("=======================");
        Phone phone2 = new FoldedPhone(new Vivo());
        phone2.open();
        phone2.call();
        phone2.close();
        System.out.println("==============");
        UpRightPhone phone3 = new UpRightPhone(new XiaoMi());
        phone3.open();
        phone3.call();
        phone3.close();
        System.out.println("==============");
        UpRightPhone phone4 = new UpRightPhone(new Vivo());
        phone4.open();
        phone4.call();
        phone4.close();
    }
}
输出
小米手机开机
 折叠样式手机 
小米手机打电话
 折叠样式手机 
小米手机关机
 折叠样式手机 
=======================
vivo手机开机
 折叠样式手机 
vivo手机打电话
 折叠样式手机 
vivo手机关机
 折叠样式手机 
==============
小米手机开机
 直立样式手机 
小米手机打电话
 直立样式手机 
小米手机关机
 直立样式手机 
==============
vivo手机开机
 直立样式手机 
vivo手机打电话
 直立样式手机 
vivo手机关机
 直立样式手机 
===========================================================
FlipPhone 新增实现桥接(翻盖样式手机)
package tanchishell.SJMS.bridge;
public class FlipPhone extends Phone{
    //构造函数
    public FlipPhone(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(" 翻盖样式手机 ");
    }
}
测试类测试

 
===========================================================
二、桥接模式在JDBC的源码剖析

 
三、桥接模式的注意事项和细节

四、桥接模式其它应用场景



















