文章目录
- 前言
- 一、桥接模式(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的源码剖析