第九章 桥接模式
文章目录
- 前言
- 一、桥接模式(Bridge)-基本介绍
- 二、桥接模式在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{@Overridepublic void open() {System.out.println("vivo手机开机");}@Overridepublic void close() {System.out.println("vivo手机关机");}@Overridepublic void call() {System.out.println("vivo手机打电话");}
}
XiaoMi 实现 Brand 接口
package tanchishell.SJMS.bridge;public class XiaoMi implements Brand{@Overridepublic void open() {System.out.println("小米手机开机");}@Overridepublic void close() {System.out.println("小米手机关机");}@Overridepublic 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的源码剖析